你能帮助Java中的正则表达式吗?

时间:2010-05-02 18:55:42

标签: java regex

我有一堆字符串可能没有随机符号和数字。一些例子是:

contains(reserved[j])){

close();

i++){

letters[20]=word

我想找到任何不是字母的字符,并用空格替换它,所以上面的例子如下:

contains reserved j

close

i

letters word

这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:3)

这取决于你的意思“不是一个字母”,但假设你的意思是字母是a-z或A-Z然后试试这个:

s = s.replaceAll("[^a-zA-Z]", " ");

如果要将多个符号折叠到一个空格中,请在正则表达式的末尾添加一个加号。

s = s.replaceAll("[^a-zA-Z]+", " ");

答案 1 :(得分:2)

yourInputString = yourInputString.replaceAll("[^\\p{Alpha}]", " ");

^表示“除<”之外的所有字符

\p{Alpha}表示所有字母字符

有关详细信息,请参阅http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

答案 2 :(得分:1)

  

我想找到任何不是字母的字符

那将是[^\p{Alpha}]+[]表示一个组。 \p{Alpha}匹配任何字母字符(大写和小写,它与\p{Upper}\p{Lower}a-zA-Z基本相同。^内部组反转匹配。{{1 }}表示一个或多个按顺序匹配。

  

并用空格替换

那将是+

总结:

" "

另请参阅java.util.regex.Pattern javadoc以获得可用模式的简要概述。您可以在精彩网站http://regular-expression.info了解有关正则表达式的更多信息。

答案 3 :(得分:0)

使用正则表达式/ [^ a-zA-Z] /表示a-z / A-Z字符中的所有内容

在红宝石中,我会这样做:

"contains(reserved[j]))".gsub(/[^a-zA-Z]/, " ")
 => "contains reserved j   "

在Java中应该是这样的:

import java.util.regex.*;
...

String inputStr = "contains(reserved[j])){";
String patternStr = "[^a-zA-Z]";
String replacementStr = " ";

// Compile regular expression
Pattern pattern = Pattern.compile(patternStr);

// Replace all occurrences of pattern in input
Matcher matcher = pattern.matcher(inputStr);
String output = matcher.replaceAll(replacementStr);