Regex 正则表达式以排除所需字符串周围的字符串
在HTML代码之间:Regex 正则表达式以排除所需字符串周围的字符串,regex,regex-lookarounds,rainmeter,regex-look-ahead,Regex,Regex Lookarounds,Rainmeter,Regex Look Ahead,在HTML代码之间: …… 如何编写正则表达式(针对使用Perl正则表达式的Rainmeter),以便: -必需字符串“我只需要此字符串”分组提取 -HTML链接标记…可能是 缺席或在场&也可以出现在所需字符串和多次之间 我的尝试: (?siU)*[>]{0,1}(.*)[{0,1} 其中: *=捕获除换行符以外的所有字符{尽管我同意使用真正的解析器解决此问题的建议,但此正则表达式应该可以解决您的问题: <div [^.<>]|*>(?:[^<>]*<a
……
如何编写正则表达式(针对使用Perl正则表达式的Rainmeter),以便:
-必需字符串“我只需要此字符串”
分组提取
-HTML链接标记…
可能是
缺席或在场&也可以出现在所需字符串和多次之间
我的尝试:
(?siU)*[>]{0,1}(.*)[{0,1}
其中:
*=捕获除换行符以外的所有字符{尽管我同意使用真正的解析器解决此问题的建议,但此正则表达式应该可以解决您的问题:
<div [^.<>]|*>(?:[^<>]*<a [^<>]*>)*([^<>]*)(?:</a>)*</div>
(?:[^]*)*([^]*)(?:)*
逻辑:
- 开始时需要
,结束时需要
- 允许并忽略匹配文本前任意多次的
- 允许并忽略匹配文本任意多次后的
- 忽略任何前面有
[^]*
的
之前的任何文本。使用*
也会起作用,但它会任意跳过所有文本,直到字符串中
的最后一个实例
- 我使用
[^]*
而不是*
以受保护的方式匹配非标记文本,因为不允许使用文本
(?:…)
分组而不捕获。如果您的编程语言不支持这一点,请改用(…)
,并调整您使用的匹配项警告:这不是完全通用的,但应该可以解决您的问题。您应该使用
XPath
或XML解析器。对于此类内容,不推荐使用正则表达式。[]
是匹配任何字符的字符类,而不是字符串
[]
表示字符集,
。您的意思可能是(){0,1}
?另外,*
将尝试尽可能多地匹配。*?
可能会起作用,因为它会说尽可能少地匹配。实际上,因为*
中的*
后面的所有内容都是可选的,所以第一个*
将一直匹配到
,中间的所有内容都将匹配为空我同意Amesshiel和choroba的观点,你真的需要一个合适的XML或HTML解析器,而不是正则表达式。
<div [^.<>]|*>(?:[^<>]*<a [^<>]*>)*([^<>]*)(?:</a>)*</div>