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

Regular Expression: Match everything except one specific character

我试图做出具体的表达,但我无法解决我的实际问题。也许你们中的一些人可以...

我有字符串:

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

谢谢大家!

您可以使用

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

参见regex demo

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

请注意,您可以在此处使用贪婪限制 (range/interval) 量词。

要限制通用模式,一个好主意是检查您的要求。如果你真的打算匹配字母、数字和 _,你可以用 \w shorthand 字符 class 替换 [^"\r\n] 否定字符 class .