0

我有一个带有以下行的大型 xml 文件:

<level id="100" name="blaha blah blah" currency="USD" abbr="blh">

我需要正则表达式来查找“blaha blah blah”

有任何想法吗?

4

2 回答 2

0

正如其他人所写的那样,Regex 不适用于这种情况,如果您正在寻找一个健壮的解决方案,那么 XML 解析器就是要走的路。不过,为了快速而肮脏,这将起作用:

\sname\s*=\s*""(.*?)""

这符合以下条件:

<level id="100" name="blaha blah blah" currency="USD" abbr="blh">
<level id="100" name ="blaha blah blah" currency="USD" abbr="blh">
<level id="100" name= "blaha blah blah" currency="USD" abbr="blh">
<level id="100" name  =  "blaha blah blah" currency="USD" abbr="blh">
于 2013-06-18T15:42:07.783 回答
0

如果正则表达式必须只匹配,blah blah blah您可以使用:

(?<=<level[^>]*\bname\s*=\s*").+?(?=")

否则,我建议您使用类似的东西:

<level[^>]*\bname\s*=\s*"(.+?)"

该值最终将作为匹配中的第一组。

在这里,惰性量词是绝对必要的,因为否则它将匹配到行上的最后一个引号(或者在文件中,如果点也匹配换行符),而不仅仅是下一个引号。

于 2013-06-18T15:55:53.957 回答