我正在看这个正则表达式
<(\\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>
显然是伪造的,但是如果您想具有这种灵活性,则可以更改此正则表达式的最后一部分。