Regex 可以获取包含一些文本的标记的正则表达式
以下是我的例子:Regex 可以获取包含一些文本的标记的正则表达式,regex,Regex,以下是我的例子: <w:p> <w:pPr> <w:spacing></w:spacing> <w:contextualSpacing/> <w:rPr/> </w:pPr> <w:r> <w:rPr> <w:color/> <w:rtl w:val="0"/> </w:rPr>
<w:p>
<w:pPr>
<w:spacing></w:spacing>
<w:contextualSpacing/>
<w:rPr/>
</w:pPr>
<w:r>
<w:rPr>
<w:color/>
<w:rtl w:val="0"/>
</w:rPr>
<w:t>Some text</w:t>
</w:r>
<w:r>
<w:rPr>
<w:color/>
<w:rtl/>
</w:rPr>
<w:t>My search text</w:t>
</w:r>
<w:r>
<w:rPr>
<w:color/>
<w:rtl/>
</w:rPr>
<w:t>Other text</w:t>
</w:r>
一些文本
我的搜索文本
其他文本
我需要用正则表达式得到这个块:
<w:r>
<w:rPr>
<w:color/>
<w:rtl/>
</w:rPr>
<w:t>My search text</w:t>
</w:r>
我的搜索文本
但是我的正则表达式总是得到第一个和最后一个
。懒惰的量词没有帮助
那么,如何仅在“我的搜索文本”中获取
块呢
下面是示例这里是修复示例的步骤
<w:r>.+My search text.+<\/w:r>
在
之前插入一个负前瞻(?!)
,以防止下一个匹配的字符成为不需要的序列的开始
或
(?:(?!)+我的搜索文本(?:(?!))+
你想做什么?它是怎么失败的?为什么要使用正则表达式而不是XML解析器?这是我的示例。关于XML解析器,解析此XML(这是DOCX格式的XML)非常困难,因此我认为使用regex会更容易+我只需要找到block并用另一个替换它为什么不搜索我的搜索文本
,上下文相关吗?如果是,请将其添加到表达式中。
<w:r>(?:.)+My search text(?:.)+<\/w:r>
<w:r>(?:(?!<w:r>|<\/w:r>).)+My search text(?:(?!<w:r>|<\/w:r>).)+<\/w:r>