Java正则表达式unicode支持?

Java正则表达式unicode支持?,java,regex,unicode,Java,Regex,Unicode,我正在开发一个应用程序,通过电子邮件接收客户对特定产品的反馈。目前,我正在使用java matcher和模式类来使用正则表达式解析某些片段和关键字 给定:客户从世界各地(亚太地区除外)的任何电子邮件客户端向我们发送电子邮件 问:我是否需要在我所有的正则表达式前面加上\\p{L}和/或\\p{M}前缀,或者我可以直接使用 \\Q\\E(用\\Q和\\E包装我的正则表达式)?您可以尝试: Pattern.quote(yourString); 它相当于\Q\E \Q\E用于文本匹配,这意味着您需要提

我正在开发一个应用程序,通过电子邮件接收客户对特定产品的反馈。目前,我正在使用java matcher和模式类来使用正则表达式解析某些片段和关键字

给定:客户从世界各地(亚太地区除外)的任何电子邮件客户端向我们发送电子邮件

问:我是否需要在我所有的正则表达式前面加上
\\p{L}
和/或
\\p{M}
前缀,或者我可以直接使用
\\Q\\E
(用
\\Q
\\E
包装我的正则表达式)?

您可以尝试:

Pattern.quote(yourString);
它相当于
\Q
\E

\Q
\E
用于文本匹配,这意味着您需要提前知道要匹配的字符串。例如,使用,
\QППццццццE
将匹配:

привет мир
.*
虽然使用
\Q.*\E
不匹配,但会匹配:

привет мир
.*

因此,如果您希望匹配一个字符串,如
Пцццццц
,或
merhaba dünya
(两者都有),您可能希望使用
\p{M}*\p{L}+
,这将捕获每个单词(
ПППцdüya
等)或者可能是捕获整个字符串的
\X+
,这与Unicode支持有什么关系
\Q
\E
在这里引用正则表达式中的字符串文字(就像答案所说的
Pattern.quote()
)thx,但是,它似乎可以用于处理unicode点和标记,但它打破了使用元字符的其他测试用例。另外,“.”(句号)被视为一个文字,而不是它的元等价物(特别是对于多行和doitall)。是的,问题是有时我不知道一个特定的字符串。有时候我想匹配一堆东西,比如^startjunk.*endjunk:$。此外,还有其他unicode代理和标记(\uxxx\uYYY或\uzzzzz)被插入其间,并破坏了我的一些正则表达式。重点是,我不知道我到底能找到什么来逃避文字。就像我说的,很多正则表达式都在使用dotall。我可以随便看看你的建议。是的,我明白。看看这个例子:。这可能会对如何将两者结合起来有所启发。