如何使用正则表达式从引号之间提取包含所需字符串的组? [关闭]
Posted
技术标签:
【中文标题】如何使用正则表达式从引号之间提取包含所需字符串的组? [关闭]【英文标题】:How to extract groups contains desired string from between quotes using regex? [closed] 【发布时间】:2018-09-07 06:45:46 【问题描述】:我想使用正则表达式从引号之间提取一些字符串。正文如下:
CCKeyUpDomReady('test.asmx/asdasd', 'QMlPJZTOH09XOPCcbB2jcg==', '0OO6h+G2Tzhr5XWj1Upg0A==', '0OO6h+G2Tzhr5XWj1Upg0A==', '/qqwweq2.asmx/qqq')
预期结果必须是:
test.asmx/asdasd
/qqwweq2.asmx/qqq
我该怎么做?以下是测试平台: https://regexr.com/3n142
条件:引号之间的字符串必须包含“asmx”字样。文本比上面显示的要多得多。您可以认为您正在网站源代码中搜索 asmx url。
【问题讨论】:
将所有内容放入一个数组中,取出数组中的第一项和最后一项。您应该在问题中澄清,如果它基于除了位置之外的其他东西,那么匹配的标准是什么。 第一个和最后一个元素共享的规则是什么?只是他们是第一个/最后一个吗? 试试'(?:[^'\\]|\\.)*asmx(?:[^'\\]|\\.)*'
对我个人而言,使用更新后的标准,我会将所有这些都放在一个数组中,然后循环(或映射)并简单地查找 /asmx/ 有更聪明的正则表达式解决方案,但这一个将是易于阅读和维护。
我编辑了问题。
【参考方案1】:
See regex in use here
'((?:[^'\\]|\\.)*asmx(?:[^'\\]|\\.)*)'
'
按字面意思匹配
((?:[^'\\]|\\.)*asmx(?:[^'\\]|\\.)*)
将以下内容捕获到捕获组 1
(?:[^'\\]|\\.)*
这是从PhiLho's answer 到Regex for quoted string with escaping quotes 收集的一个漂亮技巧。它匹配转义的'
或任何其他字符。
asmx
OP 的搜索字符串/标准
(?:[^'\\]|\\.)*
又是这个
'
从字面上匹配这个
结果在捕获组中:
test.asmx/asdasd
/qqwweq2.asmx/qqq
【讨论】:
以上是关于如何使用正则表达式从引号之间提取包含所需字符串的组? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章