我需要捕获' '
下的所有字符串内容。通过模式。
String mydata2 = "some string with 'the data i want1' inside 'the data i want2'";
Pattern pattern2 = Pattern.compile("'(.*?)'");
Matcher matcher2 = pattern2.matcher(mydata2);
if (matcher2.find())
System.out.println(matcher2.group(1));
如何使用Java模式,正则表达式API
获取输出我想要的数据1
我想要的数据2
答案 0 :(得分:1)
您的正则表达式正确。
问题是if
语句仅在特定条件为真时才执行某段代码。使用while
语句将在特定条件为真时继续执行语句块。
您应该使用while循环来循环匹配。
while (matcher2.find()) {
System.out.println(matcher2.group(1));
}
答案 1 :(得分:0)
在没有引号的情况下匹配:捕获组
要遍历字符串,请使用:
Pattern regex = Pattern.compile("'([^']+)'");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// do something with the match, which is regexMatcher.group(1)
}
在the regex demo上,请参阅右侧窗格中的捕获组(不包括引号)。
<强>解释强>
'([^']+)'
'
与开头报价([^']+)
捕获第1组引号的内部:一个或多个不是引用的字符'
与结束报价相匹配答案 2 :(得分:0)
这是一种方式:
import java.io.*;
import java.util.regex.*;
public class RegEx
{
public static void main(String[] args)
{
String mydata2 = "some string with 'the data i want1' inside 'the data i want2'";
Pattern pattern2 = Pattern.compile("'(.*?)'");
Matcher matcher2 = pattern2.matcher(mydata2);
while (matcher2.find()) {
System.out.println(matcher2.group(1));
}
}
}