как построить регулярное выражение (регулярное выражение) для сленгов и смайликов - PullRequest
2 голосов
/ 13 декабря 2010

Мне нужно создать регулярное выражение для соответствия сленгам (то есть lol, lmao, imo и т. Д.) И смайликам (т. Е. :),: P,;) и т. Д.).

iпоследовал примеру на http://www.coderanch.com/t/497238/java/java/Regular-Expression-Detecting-Emoticons., однако, этот метод / подход терпит неудачу для меня.

например, скажем, мне нужно соответствовать сленгу "od".Я создаю шаблон следующим образом.Pattern pattern = Pattern.compile (Pattern.quote ("od"));

скажем, мне нужно соответствовать сленгу "od" в следующем тестовом предложении "некоторые методы плохие".эмпирически, есть одно совпадение со словом «методы» в строке, а это не то, что я хочу.

Я читал некоторые из Javadoc и некоторые учебники, касающиеся Java и регулярных выражений, но я все еще могуне понимаю этого.

Кстати, я использую Java 6 (хотя я посмотрел и ссылаюсь на API Java документ 5).

, если регулярное выражение не лучший способиди, я открыт для других решений.заранее спасибо за любую помощь / указатели.следующий код дает мне 3 совпадения и основан на ссылке выше.

String regex = "od";
Pattern pattern = Pattern.compile(Pattern.quote(regex));
String str = "some methods are bad od od more text";
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
    System.out.println(matcher.group());
}

следующий код не возвращает совпадений и основан на ответах до сих пор.

String regex = "\bod\b";
Pattern pattern = Pattern.compile(regex);
//Pattern pattern = Pattern.compile(Pattern.quote(regex)); //this fails
String str = "some methods are bad od od more text";
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
    System.out.println(matcher.group());
}

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

String regex = "(\\bod\\b)|(\\blmao\\b)";
Pattern pattern = Pattern.compile(regex);
String str = "some methods are bad od od more text lmao more text";
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
    System.out.println(matcher.group());
}

этот код правильный или по желанию, потому что опытным путем он дает мне 3 совпадения (2 od и 1 lmao).извините, я хотел бы быть сильнее с регулярным выражением с использованием Java (и просто регулярное выражение в целом).спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 13 декабря 2010

[:;] -? [DP ()]

обрабатывает комбинации ":" или ":" плюс либо "-" и "D", либо "P", либо ")", либо "(»например.: P :-(; D и т.д ...

просто добавь больше комбинаций ...

веселись ..

1 голос
/ 13 декабря 2010

Вам нужно использовать регулярное выражение? Я бы сделал

String str = "some methods are bad od od more text lmao more text";
String[] words = str.Split(" ");
for (String s : words) {
  if (s.Equals("od") || s.Equals("lamo"))
    System.out.println(s);
}
1 голос
/ 13 декабря 2010

Вы можете использовать границы слов (\b), чтобы соответствовать слову, которое просто , на котором вы говорите.

Так, например, шаблон "\bod\b" будет соответствовать "od ", но не будет соответствовать" method ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...