我现在有这个正则表达式:
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"
测试:
正则表达式:file:\s?['"]?(.*)['"]?
字符串 1:文件:“word.124-ew/ef/?s=sf”
String2:文件:word.124-ew/ef/?s=sf
失败:file: word.124-ew/ef/?s=sf"
(捕获最后的双引号,我不想捕获双引号)
有什么解决办法吗?如果你们能帮助我,我会很高兴! 谢谢
最佳答案
您可以使用以下正则表达式:
file:\s*['"]?([^'"]+)
参见 regex demo (请注意,添加 \n
仅用于演示目的)
我使用 \s*
来匹配 0 个或多个空格(如果超过 1 个,它将匹配所有空格),添加 ?
量词使 ['"]
可选,并将惰性点匹配子模式转换为否定字符类 ([^'"]+)
匹配除 ' 以外的 1 个或多个字符
和 "
。
关于javascript - 用双引号捕获所有内容(可选)正则表达式 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063082/