我正在尝试编写一个匹配“digit~digital~string~句子”的正则表达式模式。例如14~742091~065M998~P E ROUX 214
。到目前为止,我已经提出了以下内容:
String regex= "\\d+~?\\d+~?\\w+~?"
如何在最后~
之后提取句子?
答案 0 :(得分:1)
\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)
答案 4 :(得分:0)
尝试下面的正则表达式,句子只包含字母数字和空格
^ \ d +〜\ d +〜\ W +〜[\ W \ S] +