我尝试做出一个特定的表达,但是我无法解决我的实际问题。也许有些人可以...
我有一个字符串:
<!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标记之间的特定表达式,直到出现第一个“ <”为止。在这些标签之间,我需要至少出现10个“&a0”,从而导致
&[a-zA-Z0-9]+;
问题在于,这些标记之间可能还会出现其他字符串(<除外)。这可能解决吗?
我尝试过:
<[a-zA-Z0-9]+>([^<]{10,}?)<\/[a-zA-Z0-9]+>
但是现在可以匹配所有内容,而不是所需的&[a-zA-Z0-9] +;
谢谢,伙计们!
答案 0 :(得分:1)
您可以使用
"([^"\r\n]{10,})"
请参见regex demo。
[^"\r\n]{10,}
模式匹配10个或更多出现的字符,但"
,CR和LF除外。
请注意,您可以在此处使用贪婪限制(范围/间隔)量词。
要限制通用模式,一个好主意是检查您的需求。如果您实际上计划匹配字母,数字和_
,则可以用[^"\r\n]
速记字符类替换\w
否定字符类。