RegEx在linebreak之前匹配可见的非字母字符

时间:2014-02-27 08:46:08

标签: regex vbscript

我正在开发一个vbs regexp,它会在关闭标记之前检测包含文本和CRLF字符的标记。

我目前正在使用\w+[:;?!.,""\)\]-~]*(\s)*(\r\n\s*)(<\/.*>)

从表达式的末尾看,我匹配任何结束标记,CRLF加上可选的空格,CRLF之前的可选空格,它应该可选地匹配任何单词之后出现的任何其他可见的非字母字符。

这是为了匹配像

这样的东西
myword! CRLF</tag>
mywordCRLF</tag>
myword    CRLF</tag>
myword...CRLF     </tag>

但是,我不想在下面匹配,因为我需要检测包含TEXT和换行符的标签。

</otherclosingtag>   CRLF </tag>

我担心\w+[:;?!.,""\)\]-~]*位,因为它看起来不对我,因为我需要在这里插入相当多的字符。

我尝试用\ S,\ W替换它,但它们似乎都匹配CRLF字符。

有什么想法吗?

干杯!

3 个答案:

答案 0 :(得分:1)

如何使用非贪婪的修饰符:

\w+\W*?\r\n\s*(<\/.*>)

\w+[^\r\n]*\r\n\s*(<\/.*>)

答案 1 :(得分:1)

我使用的解决方案:

\w+[^\r\n<>]*(\r\n\s*)(<\/.*>)

它匹配一个单词(所以没有)然后匹配任何不是CR,LF或&gt;的东西。 (因此它不匹配openingtag> CRLF</closingtag>

这是M42提议的修改版本,我添加了&lt;&gt;确保我们不会匹配标签。

感谢您的建议!

答案 2 :(得分:0)

试试这个:

^.*[\n\t\s]*</.*>$ --> BAD

^.*[\r\n\t\s]*</.*>$