相关疑难解决方法(0)

否定正则表达式中的反向引用

如果字符串具有此预测格式:

value = "hello and good morning"
Run Code Online (Sandbox Code Playgroud)

其中"(引用)也可能是'(单引号),而结束字符('或")与开头字母相同.我想匹配引号之间的字符串.

\bvalue\s*=\s*(["'])([^\1]*)\1
Run Code Online (Sandbox Code Playgroud)

(这两个是允许=符号附近的任何空格)

第一个"捕获的组"(在第一对括号内) - 应该与开头的引号匹配,后者应该是'或'然后 - 我应该允许任何数量的字符不是第一组中捕获的字符,然后我期待在组中捕获的字符(括号引号).

(必须在第二个捕获组中捕获所需的字符串).
但这不起作用.

这样做:

\bvalue\s*=\s*(['"])([^"']*)["']
Run Code Online (Sandbox Code Playgroud)

但我想确保开始和结束引号(双重或单引号)是相同的.


编辑
目标基本上是获取一个锚的开始标记,该锚具有包含在其类属性中的某个类名,我想要涵盖类属性的罕见情况,包括(')或().

根据这里的所有建议,我使用了以下模式:

<\s*\ba\b[^<>]+\bclass\s*=\s*("|'|\\"|\\')(?:(?!\1).)*\s*classname\s*(?:(?!\1).)*\1[^>]*>
Run Code Online (Sandbox Code Playgroud)

含义:
找一个标记 - 开放标志.
允许任何空格.
找到单词 a.
允许任何非关闭标记.
找到"class(任何空格)=(任何空格)"
获取开场引号,以下之一:("或'或\"或\').
来自Alan Moore的回答:允许任何不是开头报价的字符.
find classname
允许任何不是开头引号的字符.
找到与开头相同的收盘价.
允许任何unclosing-tag字符.
找到结束标记char.

regex backreference negate regex-group

41
推荐指数
1
解决办法
1万
查看次数

Tempered Greedy Token - 在负前瞻之前放置点有什么不同

<table((?!</table>).)*</table>
Run Code Online (Sandbox Code Playgroud)

但是,匹配我的所有表格标签

<table(.(?!</table>))*</table>
Run Code Online (Sandbox Code Playgroud)

才不是.第二个似乎是有意义的,如果我试图用文字写出表达,但我无法理解第一个.

有人可以向我解释一下这个区别吗?

作为参考,我从这里得到了"Tempered Greedy Token"这个术语:http://www.rexegg.com/regex-quantifiers.html#tempered_greed

regex eclipse

16
推荐指数
3
解决办法
2334
查看次数

当字符串出现两次时匹配的正则表达式

我对RegEx表达式很恐怖,我只是不经常使用它们来记住使用之间的语法.

我正在使用grepWin来搜索我的文件.我需要进行搜索,返回两次给定字符串的文件.

所以,例如,如果我在搜索单词"how",那么文件一不匹配:

你好
,今天好吗?

但文件二会:

你好
,今天好吗?

我很好,你好吗?

任何人都知道如何制作一个与之匹配的RegEx?

regex

14
推荐指数
2
解决办法
3万
查看次数

标签 统计

regex ×3

backreference ×1

eclipse ×1

negate ×1

regex-group ×1