用于java中括号中单词的正则表达式

时间:2013-08-21 12:35:44

标签: java regex

请建议我使用括号中的单词的正则表达式

ex:hello(s)

我应该hello作为输出

请建议我

我试过这些

[a-z]\\(s\\)

[a-z]\\(\\s\\)

5 个答案:

答案 0 :(得分:4)

要匹配单词后面没有(s)的单词(即匹配hello中仅 hello(s)),您可以使用正数先行

\\w+(?=\\(s\\))

答案 1 :(得分:1)

它必须是一个或多个字母(用+表示):

[a-z]+\\(s\\)

要获取不带(s)的字符串,您可以使用预测或组。

对于组,必需的字符串必须在括号中:

([a-z]+)\\(s\\)

然后得到第一组,如下:

String str = "hello(s)";
String regex = "([a-z]+)\\(s\\)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if (m.matches())
   System.out.println(m.group(1));

答案 2 :(得分:1)

根据您所认为的单词,以下内容可行:

[a-z]+\\(s\\)

这只是假定小写的英文字母为单词,如果你使用不区分大小写的标志以及大写字母。但不会考虑Jörgvar_ptr

答案 3 :(得分:1)

你也可以尝试这个

 "hello(s)".replaceAll("\\(.*?\\)","")

答案 4 :(得分:0)

您可以尝试使用正则表达式:

(?<=\p{L}+)\(s\)

\p{L}表示Unicode字母的类别。另外,您可以使用常量java.util.regex.Pattern来避免每次重新编译表达式,如下所示:

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("(?<=\\p{L}+)\\(s\\)");

public static void main(String[] args) {
    String input = "hello(s), how are you?";

    System.out.println(
        REGEX_PATTERN.matcher(input).replaceAll("")
    );  // prints "hello, how are you?"
}