php - 匹配单词,然后匹配潜在的括号字符串,然后匹配潜在的方括号字符串

标签 php regex

我有一个脚本,我需要从文本字符串中获取三个部分,并将它们返回到数组中。经过几次尝试和失败后,我无法让它工作。

文本字符串可以如下所示:

Some place
Some place (often text in parenthesis)
Some place (often text in parenthesis) [even text in brackets sometimes]

我需要将这些字符串分成三个:

{Some place} ({often text in parenthesis}) [{even text i brackets sometimes}]

应该返回:

1: Some place
2: often text in parenthesis
3: even text in brackets sometimes

我知道这应该是一项简单的任务,但我无法解决正确的正则表达式。这将在 PHP 中使用。

提前致谢!

最佳答案

尝试这样的事情:

$result = preg_match('/
  ^ ([^(]+?)
  (\s* \( ([^)]++) \))?
  (\s* \[ ([^\]]++) \])?
  \s*
  $/x', $mystring, $matches);

print_r($matches);

请注意,在此示例中,您可能对 $matches[1]、$matches[3] 和 $matches[5] 最感兴趣。

关于php - 匹配单词,然后匹配潜在的括号字符串,然后匹配潜在的方括号字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/645683/

相关文章:

ruby - 如何选择最接近句号的前280个单词?

php - 将 Android 设备连接到 Apache 服务器

javascript - 编辑当前表单向导以成功发布数据

c++ - 递归函数中的boost regex smatch表现得像一个静态变量

php - PHP 正则表达式中的 UTF-8

python - 在 Python MULTILINE 模式下仅匹配字符串的开头

javascript - 如果至少出现 n 次,则匹配最后一个斜杠

php - 仅选择 user2_id 打印出 num 行

当有日期和时间时,td 中的 php 正则表达式

PHP 放弃 SQlite?