2

我正在寻找 Java 中的正则表达式模式,它对应于除字母 a 到 z 之外的所有字符。

换句话说,我想要一个对应于符号的正则表达式模式,例如

 !"#¤%&/()=?`´\}}][{€$@

或者以某种方式仅将字符串修剪为字母。

例如,让我们考虑以下字符串:

 "one!#"¤%()=) two}]}[()\ three[{€$"

到:

 "one two three"
4

4 回答 4

4

Unicode 版本将是

\PL

\PL都是不具有“字母”属性的 Unicode 代码点。

\pL将是对应的,所有具有“字母”属性的 Unicode 代码点。

也许您可以在 regular-expressions.info 上找到一些更符合您需求的属性。

您还可以将它们组合成字符类,就像处理预定义的类一样,例如

[^\pl\pN]

将匹配 Unicode 中不是字母或数字数字字符的任何字符。

于 2012-02-29T15:03:02.443 回答
3

例如,让我们考虑以下字符串:

 "one!#"¤%()=) two}]}[()\ three[{€$"

到:

 "one two three"

所需的模式是匹配既不是字母也不是分隔符的所有内容。否则你最终会得到"onetwothree"而不是"one two three"你要求的。

[^\pL\pZ]
于 2012-02-29T15:18:39.890 回答
1

[^a-zA-Z] 是一个字符类,它匹配除字母 a 到 z 以外的每个字符(小写或大写)。

于 2012-02-29T15:00:23.097 回答
1

最简单的形式:[^az]

如果您还想删除大写字母,也可以是 [^a-zA-Z]。

于 2012-02-29T15:00:45.193 回答