【发布时间】:2018-09-14 09:54:44
【问题描述】:
我试图做出一个具体的表达,但我无法解决我的实际问题。也许你们中的一些人可以...
我有字符串:
<!ENTITY a0 "dosdosdosdosdosdosdosdosdosdosdosdosdosdos"
现在我想匹配引号之间的所有内容(至少 10 个字符),除了引号。
我开始:
"(.{10,}?)"
乍一看,这匹配得很好,但是这也匹配了下面的字符串,这对我来说是错误的。
<!ENTITY a0 "dosd"
<!ENTITY a0 "osdos"
匹配从第一行的第一个引号开始,到最后一行的最后一个引号结束。
我理解为什么会发生这种情况,但我无法构建一个正则表达式,它可以匹配除引号之外的每个字符 10 次。点太笼统了。
编辑:新问题
新字符串:
<data>&a0;&a0;asddd&a0;&a0;&a0; 234324&a0;&a0;&a0;&a0;&a0;&a0;</data>
现在我尝试匹配这两个 XML 标记之间的特定表达式,直到第一个“
&[a-zA-Z0-9]+;
问题是,这些标签之间也可能出现不同的其他字符串(
我试过了:
<[a-zA-Z0-9]+>([^<]{10,}?)<\/[a-zA-Z0-9]+>
但是现在它可以匹配所有内容而不是想要的 &[a-zA-Z0-9]+;
谢谢各位!
【问题讨论】:
-
"([^"]{10,}?)"只做否定字符组[^"]除了"之外的所有内容,或者如果您确定只有字符出现在点之间,则进一步限制它:例如[a-z]{10,}或[a-zA-Z0-9]{10,}可能有用 -
在第二个带有两行的示例中,您的表达式现在匹配第二个和第三个引号之间的所有内容。问题是我不知道 XML 文档中这些引号之间允许使用哪个字符集。
-
使用
"([^"\r\n]{10,}?)",获取Group 1的值。可能,"(\w{10,}?)"会更好。 -
只排除换行符然后
-
这对我有用!谢谢大家!