正则表达式首次出现括号

时间:2018-02-14 08:50:07

标签: php regex

我有一个这样的字符串:

  

地址:Big Avenue 9 - National(FOREST(THE))。

我需要用正则表达式解析它以检索这样的数据:

  • Big Avenue 9 - National
  • FOREST(THE)

我正在使用这个正则表达式:

/Adress\:\s(.*(?!\.*\)))\((.*[\(.*\)]?)\)/

但是他们给出了这个结果:

  • Big Avenue 9 - National(FOREST
  • THE)

我正在搜索很多信息,但我不知道该怎么做。 非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用

'~Adress:\s*(.*?)\s*\((.*)\)~'

请参阅PHP regex demo,结果

enter image description here

<强>详情

  • Adress: - 文字子字符串
  • \s* - 0+ whitespaces
  • (.*?) - 第1组:除了换行符之外的任何0 +字符,尽可能少
  • \s* - 0+ whitespaces
  • \( - (字符
  • (.*) - 第2组:除了换行符之外的任何0 +字符,尽可能很多
  • \) - )字符

查看PHP demo

$re = '/Adress:\s*(.*?)\s*\((.*)\)/';
$str = 'Adress: Big Avenue 9 - National (FOREST (THE)).';
if (preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0)) {
    print_r($matches);
}

答案 1 :(得分:0)

您可以按(匹配第一个([^(]*)之前的任何内容,然后选择( ... )(\(.*\))?

Adress\:\s([^(]*)(\(.*\))?

在这里玩:https://regexr.com/3kp5i