使用正则表达式提取一些模式

时间:2014-09-02 07:52:02

标签: java regex

我正在尝试编写一个匹配“digit~digital~string~句子”的正则表达式模式。例如14~742091~065M998~P E ROUX 214。到目前为止,我已经提出了以下内容:

String regex= "\\d+~?\\d+~?\\w+~?"

如何在最后~之后提取句子?

5 个答案:

答案 0 :(得分:1)

使用Capturing Groups

\d+~?\d+~?\w+~(.*)

group(1)包含您想要的部分。

另一种解决方案是使用String#split

String[] splitted = myString.split("~");
String res = splitted[splitted.length() - 1];

答案 1 :(得分:0)

使用捕获组(),如此模式所示:"\\d+~\\d+~\\w+~(.*)"。请注意,您不需要贪心量词?

String input = "14~742091~065M998~P E ROUX 214";

Pattern pattern = Pattern.compile("\\d+~\\d+~\\w+~(.*)");
//Pattern pattern = Pattern.compile("(?:\\d+~){2}\\w+~(.*)"); (would also work)

Matcher matcher = pattern.matcher(input);

if (matcher.matches()) {
    System.out.println(matcher.group(1));
}

打印:

P E ROUX 214

答案 2 :(得分:0)

你应该使用( )来提取你想要的输出, 有关详细信息,请参阅here

答案 3 :(得分:0)

.*~(.*)$

这个简单的正则表达式应该适合你。

See demo

答案 4 :(得分:0)

尝试下面的正则表达式,句子只包含字母数字和空格

  

^ \ d +〜\ d +〜\ W +〜[\ W \ S] +