3 回答
TA贡献1799条经验 获得超8个赞
您可以使用
final String text = "This is param-start ?abcdef; param-end";
final String patternString = "(['\"]?)\\?.*?;\\1";
final Pattern pattern = Pattern.compile(patternString, Pattern.DOTALL);
final Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Match found: " + matcher.group());
}
// => Match found: = ?abcdef;

备注:
while (matcher.find())- 遍历字符串中的所有潜在匹配matcher.group()- 访问匹配值。
正则表达式
(['"]?)- 捕获组 1:要么'或"\?- 一个?字符.*?- 任何 0+ 字符,尽可能少(模式用 编译Pattern.DOTALL,因此它也将匹配换行符);- 一个分号\1- 与第 1 组中捕获的值相同。
TA贡献1853条经验 获得超18个赞
您的描述声明“以 ? 开头并以 ; 结尾”,但您的示例字符串不以分号结尾 - 它以双引号结尾。
如果要允许字符串以单引号或双引号开头或结尾,则匹配应为: ^['"]?\?[^;]+;\['"]?$
添加回答
举报
