我想知道如何在匹配模式后从结果中排除子字符串.例:
<a href="?page1"><?php __('string1');?></a>
<a href="?page2"><?php __("string2");?></a>
Run Code Online (Sandbox Code Playgroud)
我想只获得作为参数传递给__()函数的字符串.我试过这个正则表达式:
'/__\(((\'([^\']+)\')|(\"([^\"]+)\"))/'
Run Code Online (Sandbox Code Playgroud)
但是返回'string1'和"string2"包装在单引号和双引号中.
如何排除单引号和双引号?
尝试这个
'/__\(('|")([^\1]+)\1\)/'
^1^ ^^2^^^
Run Code Online (Sandbox Code Playgroud)
每次打开圆括号时,都会创建一个捕获组。因此,如果您不想使用它,(?:)则会定义一个非捕获组。我这里不用这个。我稍微重写了你的正则表达式。在我的第一组中,我检查是否有'or"并将它们存储到组 1 中。稍后我使用\1对此组的反向引用,以使用正确的字符。
然后,您的结果将始终存储在组 2 中。访问此结果的方式取决于您使用的语言。