我正在看这个正则表达式

<(\\w*)>\\.*</(\\w*)>

遍历教程等。我将其理解为阅读,匹配形式之后的任何内容
<tag1>blah</tag1>

即一个XML元素,一些文本和一个结束XML元素。但是,当我在各种正则表达式检查器(例如Expresso)上运行它时,它与我认为的不匹配。

注意:进一步复杂化此正则表达式是在Java中,据我所知,这意味着存在一些细微的差异。

我想念什么?

任何赞赏...

谢谢

最佳答案

仅对于文字需要转义,但是某些语言使用\本身来转义字符串中的字符,从而迫使您在字符串中使用\\来表示正则表达式中的\。尝试提取\\(正则表达式中的文字\)可以是此类语言的\\\\。我认为这可能是在示例代码中看到\\时造成混乱的原因。

改善正则表达式:

如果有人想做一个冲洗器,并构造一个不规则表达式,例如:

< _some_tag some="stuff" >
    some <strong>content</strong>
< / _some_tag >

您可以使用这种更通用的正则表达式来捕获标记名称,内容和属性。
<\s*([A-Za-z_]\w*)\s*([^\>]+)>(.*?)<\s*\/\s\1\s*>

请注意,如果同一标签在页面中还存在,则需要.*?;否则,保持贪婪将使其捕获所有内容,直到最后一个具有该名称的标签关闭为止。另外<tag1>blah</tag2>显然是伪造的,但是如果您想具有这种灵活性,则可以更改此正则表达式的最后一部分。

10-08 07:40