Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带括号的Regex get第一次出现_Php_Regex - Fatal编程技术网

Php 带括号的Regex get第一次出现

Php 带括号的Regex get第一次出现,php,regex,Php,Regex,我有这样一个字符串: 地址:大马路9号-国家森林公园 我需要用正则表达式对其进行解析,以检索如下数据: 大马路9号-国家公园 森林(森林) 我正在使用这个正则表达式: /Adress\:\s(.*(?!\.*\)))\((.*[\(.*\)]?)\)/ 但他们给了我这个结果: 大马路9号-国家森林公园 (二) 我一直在搜索洛特的信息,但我不知道怎么做。 非常感谢您的帮助。您可以通过([^(]*))匹配第一个()之间的任何内容,然后将可选(…)与(\(.*)?之间的任何内容进行匹配。 在

我有这样一个字符串:

地址:大马路9号-国家森林公园

我需要用正则表达式对其进行解析,以检索如下数据:

  • 大马路9号-国家公园
  • 森林(森林)
我正在使用这个正则表达式:

/Adress\:\s(.*(?!\.*\)))\((.*[\(.*\)]?)\)/
但他们给了我这个结果:

  • 大马路9号-国家森林公园
  • (二)
我一直在搜索洛特的信息,但我不知道怎么做。
非常感谢您的帮助。

您可以通过
([^(]*)
)匹配第一个
)之间的任何内容,然后将可选
(\(.*)?
之间的任何内容进行匹配。

在此处播放:

您可以使用

'~Adress:\s*(.*?)\s*\((.*)\)~'
请参见,结果

详细信息

  • 地址:
    -文字子字符串
  • \s*
    -0+空格
  • (.*)
    -第1组:除换行符以外的任何0+字符,尽可能少
  • \s*
    -0+空格
  • \(
    -a
    字符
  • (.*)
    -第2组:除换行符以外的任何0+字符,尽可能多
  • \)
    -a
    字符
见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);
}