我需要拾取第一个和最后一个括号之间的所有文本,但是使用正则表达式很困难。
到目前为止,我所拥有的是我,被困住了,不知道继续前进的热情。
/(\w+)\((.*?)\)\s/g)
但是它会停在它看到的第一个“)”处。
示例:
(me)
(mine)
((me) and (you))
所需的输出是
me
mine
(me) and (you)
答案 0 :(得分:1)
由于要捕获括号内的所有文本,因此不应使用非贪婪量词。您可以使用此正则表达式,该正则表达式使用环视和贪婪版本.*
,该版本捕获(
和)
之间的所有文本。
(?<=\().*(?=\))
编辑:另一种替代解决方案
另一种提取相同数据的方法可以使用以下正则表达式来完成,该正则表达式没有任何前瞻性,某些正则表达式不支持这种正则表达式,在这种情况下可能很有用。
^\((.*)\)$
此处^\(
与起始括号匹配,然后(.*)
以详尽的方式使用任何文本,并置于第一个分组模式,并且仅在行尾之前最后出现的)
处停止。
答案 1 :(得分:1)
使用chop()
和reverse()
$string='((me) and (you))';
chop($string);
$string = reverse($string);
chop($string);
$string = reverse($string);
print $string;
输出:
(me) and (you)
答案 2 :(得分:1)
您的代码几乎是正确的,仅当您不添加?时,它才有效。在正则表达式中,例如:(我还删除了几件事)
/\w+\((.*)\)/