在特定模式后提取字符串

时间:2016-07-23 11:15:14

标签: java android regex

在尝试理解在一个字符串中的特定模式之后提取字符串的方法后,我失去了理智。

模式是#|#,例如字符串是: Scirocco_#01_#|#Cp1freezer 我想在模式结束后找到模式并提取字符串: Cp1freezer

我尝试使用正则表达式^(。)#|#(。)$,但我找不到出路。

String input = "Scirocco_#01#|#Cp1";
Matcher m = Pattern.compile("^(.*)#|#(.*)$").matcher(input);
if(m.find()) {
  String first = m.group(1); // Scirocco_#01
  String second = m.group(2); // Cp1
}

2 个答案:

答案 0 :(得分:1)

您需要逃离管道' |'

像这样:

Matcher m = Pattern.compile("^(.*)#\\|#(.*)$").matcher(input);

答案 1 :(得分:1)

首先,您需要转义|以便按字面意思匹配它。其次,如果您只想提取#|#之后的内容,则不需要捕获#|#之前的内容,因此可以删除表达式的开头。第一个捕获组将包含所需的子字符串:

"#\\|#(.*)$"

演示:https://ideone.com/msXR3U