【发布时间】:2011-12-24 17:43:36
【问题描述】:
如果字符串具有这种预测格式:
value = "hello and good morning"
"(引号)也可能是 '(单引号),并且结束字符(' 或 ")将与开始字符相同。我想匹配引号之间的字符串。
\bvalue\s*=\s*(["'])([^\1]*)\1
(两个 \s 允许 = 符号附近的任何空格)
第一个“捕获的组”(在第一对括号内)- 应该与应该是 ' 或 " 的开头引号匹配 然后 - 我应该允许任何数量的字符不是第一组中捕获的字符,然后我希望在组中捕获的字符(括起来的引号)。
(应在第二个捕获组中捕获所需的字符串)。
但这不起作用。
这样做:
\bvalue\s*=\s*(['"])([^"']*)["']
但我想确保左引号和右引号(双引号或单引号)相同。
编辑
目标基本上是获取一个锚点的开始标签,该锚点在其类属性中包含某个类名,我想涵盖包含 (') 或 (") 的类属性的罕见情况。
按照这里的所有建议,我使用了该模式:
<\s*\ba\b[^<>]+\bclass\s*=\s*("|'|\\"|\\')(?:(?!\1).)*\s*classname\s*(?:(?!\1).)*\1[^>]*>
含义:
找到一个标签打开的标志。
允许任何空格。
找到单词
允许任何非结束标签。
查找“类(任何空格)=(任何空格)”
获取开头引号,以下之一:(" or ' or \" or \')。
来自 Alan Moore 的回答:允许任何不是开头引号的字符。
查找类名
允许任何不是开头引号的字符。
找到与开头相同的结尾引号。
允许任何未关闭标签字符。
找到结束标记 char。
【问题讨论】:
-
引号可以转义吗? IE。
value = 'O\'Neill'
标签: regex backreference regex-group negate