我现在有这个正则表达式:
file:\s?['"](.*?)['"]
对于这个字符串:
file: "word.124-ew/ef/?s=sf"
输出是:
file: word.124-ew/ef/?s=sf
但我还想捕捉一个没有双引号的组(可选)。例如,这个:
file: word.124-ew/ef/?s=sf
没有双引号,但也可以有它们(可选)。
我尝试制作这个正则表达式,但它没有得到所需的结果:
file:\s?['"]?(.*)['"]?
输出是:
word.124-ew/ef/?s=sf
包含最终的双引号,而不是我的预期(不会捕获双引号)。
现在使用我制作的最后一个正则表达式,再次添加双引号时出现问题。输出是:
file: word.124-ew/ef/?s=sf"
经过测试:
RegExp:file:\s?['"]?(.*)['"]?
String1:file: "word.124-ew/ef/?s=sf"
String2:file: word.124-ew/ef/?s=sf
失败:file: word.124-ew/ef/?s=sf"
(捕获最后的双引号,我不想捕获双引号)
任何解决方案?如果你们能帮助我,我会很高兴的! 感谢
答案 0 :(得分:1)
您可以使用以下正则表达式:
file:\s*['"]?([^'"]+)
请参阅regex demo(请注意,\n
仅用于演示目的)
我使用\s*
来匹配0个或更多的空格(如果有超过1个,它将全部匹配),添加?
量词以使['"]
可选,并转向将延迟点匹配子模式转换为与([^'"]+)
和'
以外的一个或多个字符匹配的否定字符类"
。