Можете ли вы помочь с регулярными выражениями в Java? - PullRequest
4 голосов
/ 02 мая 2010

У меня есть несколько строк, которые могут не содержать случайных символов и цифр. Вот некоторые примеры:

contains(reserved[j])){

close();

i++){

letters[20]=word

Я хочу найти любой символ, который НЕ является буквой, и заменить его пробелом, поэтому приведенные выше примеры выглядят так:

contains reserved j

close

i

letters word

Каков наилучший способ сделать это?

Ответы [ 4 ]

3 голосов
/ 02 мая 2010

Это зависит от того, что вы подразумеваете под «не буквой», но если предположить, что вы имеете в виду, что буквы являются a-z или A-Z, попробуйте следующее:

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

Если вы хотите свернуть несколько символов в один пробел, добавьте плюс в конце регулярного выражения.

s = s.replaceAll("[^a-zA-Z]+", " ");
2 голосов
/ 02 мая 2010
yourInputString = yourInputString.replaceAll("[^\\p{Alpha}]", " ");

^ обозначает «все символы, кроме»

\p{Alpha} обозначает все буквенные символы

Подробнее см. http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html

1 голос
/ 02 мая 2010

Я хочу найти любой символ, который НЕ является буквой

Это будет [^\p{Alpha}]+. [] обозначает группу. Символ \p{Alpha} соответствует любому буквенному символу (как в верхнем, так и в нижнем регистре), он в основном совпадает с \p{Upper}\p{Lower} и a-zA-Z. Внутренняя группа ^ инвертирует совпадения. много совпадений в последовательности.

и замените его пробелом

Это будет " ".

Суммировано:

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

Также см. java.util.regex.Pattern javadoc для краткого обзора доступных шаблонов. Вы можете узнать больше о регулярных выражениях на отличном сайте http://regular -expression.info .

0 голосов
/ 02 мая 2010

Используйте регулярное выражение / [^ a-zA-Z] /, что означает, что все, что не в символах a-z / A-Z

В ruby ​​я бы сделал:

"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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...