正则表达式:匹配除一个特定字符之外的所有字符

时间:2018-09-14 09:54:44

标签: regex xml pcre

我尝试做出一个特定的表达,但是我无法解决我的实际问题。也许有些人可以...

我有一个字符串:

<!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] +;

谢谢,伙计们!

1 个答案:

答案 0 :(得分:1)

您可以使用

"([^"\r\n]{10,})"

请参见regex demo

[^"\r\n]{10,}模式匹配10个或更多出现的字符,但",CR和LF除外。

请注意,您可以在此处使用贪婪限制(范围/间隔)量词。

要限制通用模式,一个好主意是检查您的需求。如果您实际上计划匹配字母,数字和_,则可以用[^"\r\n]速记字符类替换\w否定字符类。