有没有人知道是否有办法找到长度超过一定长度的文字,并且是在两个子串之间?
例如:
<element><![CDATA[Hi, I'm a message.]]></element>
我需要找到CDATA []中的任何文本字符串超过136个字符。 该字符串也可以在多行上:
<element><![CDATA[Hi, I'm a message,
and I'm on 2 lines.]]></element>
答案 0 :(得分:0)
使用搜索模式Regular expression
和. matches newline
选择
<\!\[CDATA\[(?:(?!\]\]>).){137,}
说明:
对于CDATA标记的开头,<\!\[CDATA\[
是一个带有转义的文字
(?: ... )
是一个非捕获组,在此处是逻辑包围
(?!\]\]>).
只要文字]]>
在这里匹配任何字符
{137,}
说这样做137次(至少)
因此,这将达到您想要的任何CDATA
您可能希望在末尾添加\]\]>
以使用关闭标记,但是匹配结束标记是不必要的(假设文档格式正确)
这会将新行计为字符,如果这是一个问题,您可以将.
替换为(?:.\n*)
以减少此影响