Php 带括号的Regex get第一次出现
我有这样一个字符串: 地址:大马路9号-国家森林公园 我需要用正则表达式对其进行解析,以检索如下数据:Php 带括号的Regex get第一次出现,php,regex,Php,Regex,我有这样一个字符串: 地址:大马路9号-国家森林公园 我需要用正则表达式对其进行解析,以检索如下数据: 大马路9号-国家公园 森林(森林) 我正在使用这个正则表达式: /Adress\:\s(.*(?!\.*\)))\((.*[\(.*\)]?)\)/ 但他们给了我这个结果: 大马路9号-国家森林公园 (二) 我一直在搜索洛特的信息,但我不知道怎么做。 非常感谢您的帮助。您可以通过([^(]*))匹配第一个()之间的任何内容,然后将可选(…)与(\(.*)?之间的任何内容进行匹配。 在
- 大马路9号-国家公园
- 森林(森林)
/Adress\:\s(.*(?!\.*\)))\((.*[\(.*\)]?)\)/
但他们给了我这个结果:
- 大马路9号-国家森林公园
- (二)
非常感谢您的帮助。您可以通过
([^(]*)
)匹配第一个(
)之间的任何内容,然后将可选(
…)
与(\(.*)?
之间的任何内容进行匹配。
在此处播放:您可以使用
'~Adress:\s*(.*?)\s*\((.*)\)~'
请参见,结果
详细信息
-文字子字符串地址:
-0+空格\s*
-第1组:除换行符以外的任何0+字符,尽可能少(.*)
-0+空格\s*
-a\(
字符(
-第2组:除换行符以外的任何0+字符,尽可能多(.*)
-a\)
字符)
您实际搜索的语言和方式是什么?尝试一下我使用的是PHP,我的搜索方式是:preg\u match\u all('/address\:\s(.*(?))(.[(.*))/',$list->content,$result,preg\u SET\u ORDER);谢谢Wiktor。它们工作正常。我已将其更改为:
\s*(.*?)\s*(.*))< /代码>将括号排除在结果中。@ EMM,很高兴为您工作。请考虑通过点击接受答案。✓ 在(见)的左边。
'~Adress:\s*(.*?)\s*\((.*)\)~'
$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);
}