【发布时间】:2010-04-27 17:07:30
【问题描述】:
我正在创建的正则表达式存在一些问题。
我需要一个正则表达式来匹配以下示例,然后在第一个引用的字符串上进行子匹配:
输入字符串
("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
('Lorem ipsum dolor sit amet, consectetur adipiscing elit. ')
('Lorem ipsum dolor sit amet, consectetur adipiscing elit. ', 'arg1', "arg2")
必须子匹配
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
到目前为止的正则表达式:
\((["'])([^"']+)\1,?.*\)
正则表达式对第一组引号之间的文本进行子匹配,并返回上面显示的子匹配。
这几乎可以完美运行,但我遇到的问题是,如果引用的字符串在文本中包含引号,则子匹配在第一个实例中停止,见下文:
输入字符串失败
("Lorem ipsum dolor \"sit\" amet, consectetur adipiscing elit.")
仅子匹配:Lorem ipsum dolor
("Lorem ipsum dolor 'sit' amet, consectetur adipiscing elit.")
整个匹配失败。
备注
输入字符串实际上是 php 代码函数调用。我正在编写一个脚本,它将扫描 .php 源文件以查找特定函数并从第一个参数中获取文本。
【问题讨论】:
-
为什么不直接使用反射 API?编辑:没关系...您的意思是您正在扫描实际脚本而不是函数/类/等..
-
正确。我正在扫描源代码以查找上述字符串。