正如所描述的标题,正则表达式应提供给定字符串,字符串前缀(可选)和字符串后缀(可选)的提取信息的目的如何使正则表达式允许可选的前缀和后缀提取
这样
prefix_group_1_suffix
回报group_1
时的前缀是 'prefix_' 和后缀是_suffix
prefix_group_1
回报group_1
时的前缀是 'prefix_' 和后缀null
< - 我的代码无法处理这种情况
group_1_suffix
回报group_1
时前缀为“空”和后缀是_suffix
group_1
回报group_1
时前缀为“空”和后缀是null
< - 我的代码不能处理这种情况
这里是我的代码,但是我发现它不工作时
String itemName = "";
String prefix = "TEST_";
String suffix = "";
String itemString = prefix + "item_1" + suffix;
String prefix_quote = "".equals(prefix) ? "" : Pattern.quote(prefix);
String suffix_quote = "".equals(suffix) ? "" : Pattern.quote(suffix);
String regex = prefix_quote + "(.*?)" + suffix_quote;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(itemString);
while (matcher.find()) {
itemName = matcher.item(1);
break;
}
System.out.println("itemString '"+itemString+"'");
System.out.println("Prefix quote '"+prefix_quote+"'");
System.out.println("Suffix quote '"+suffix_quote+"'");
System.out.println("regex '"+regex+"'");
System.out.println("itemName is '"+itemName+"'");
,这里是输出
itemString 'TEST_item_1'
Prefix quote '\QTEST_\E'
Suffix quote ''
regex '\QTEST_\E(.*?)'
itemName is ''
但上面的代码工作以及与其他两个条件
你看的正则表达式的任何教程? – JoelFan
那么考虑两种情况,prefix_group_1和group_1_suffix。我相信前缀和后缀可以是任何文本值。然后这两种模式都与A_B_C相同。系统如何说如果A是前缀,B_C是缺少后缀的数据,或者C是后缀为A_B的后缀,并且缺少前缀。该系统需要更多信息。另外,如果你的文本是用下划线格式化的,那么为什么你需要使用正则表达式的原因是什么?为什么不把它解析为标记。 – Gautam
你为什么要重复比赛?我理解你的问题的方式是,每个字符串只能有(最多).one匹配。 –