java 中的正则表达式不起作用
Regular expression in java not working
我将 excel 文件转换为 CSV,然后再转换为字符串。
问题是正则表达式不能正常工作
我要检测这种文字:
MYW Pkg, MYW Pkg + Quick Service Dining, MYW Pkg + Dining, MYW Pkg +
Deluxe Dining,
Room + Tickets + Quick Service Dining
我有一个字符串数组。
所以我需要知道一个模式,我尝试了这个但它没有检测到它:
Pattern.compile("([A-Z]{3})+(\s)+([A-Za-z]{3})+(\s)+(\+)");
我尝试匹配 "MYW Pkg +" 例如,
你知道为什么它不起作用吗?
更多代码:
chain 是数组,其值类似于 "MYW Pkg,"
Pattern patPackageDescription = Pattern.compile("([A-Z]{3})+(\s)+([A-Za-z])+(\s)+(\+)");
for (int i = 0; i < chain.length; i++) {
Matcher matPackageDescription = patPackageDescription
.matcher(chain[i]);
if (matPackageDescription.matches()) {
String space = String.format("%1$-" + 50 + "s",
chain[i].toString());
a.append(space + "|\n");
}
}
此致。
matches()
方法尝试将整个字符串与模式匹配,要匹配字符串的一部分,您需要使用 find()
方法。
String str = "MYW Pkg, MYW Pkg + Quick Service Dining, MYW Pkg + Dining, MYW Pkg + Deluxe Dining,";
Pattern patPackageDescription = Pattern.compile("([A-Za-z]{3}\s)+\+");
Matcher matPackageDescription = patPackageDescription.matcher(str);
while (matPackageDescription.find()) {
System.out.println(matPackageDescription.group());
}
输出:
MYW Pkg +
MYW Pkg +
MYW Pkg +
查看 以获得解释。
您的问题是您使用的 Matcher.matches()
需要完全匹配,如果您可以使用 find()
进行部分匹配或添加 .*
以匹配搜索字符串后的任何内容.
([A-Z]{3})+(\s)+([A-Za-z]{3})+(\s)+(\+).*
我将 excel 文件转换为 CSV,然后再转换为字符串。
问题是正则表达式不能正常工作
我要检测这种文字:
MYW Pkg, MYW Pkg + Quick Service Dining, MYW Pkg + Dining, MYW Pkg + Deluxe Dining,
Room + Tickets + Quick Service Dining
我有一个字符串数组。 所以我需要知道一个模式,我尝试了这个但它没有检测到它:
Pattern.compile("([A-Z]{3})+(\s)+([A-Za-z]{3})+(\s)+(\+)");
我尝试匹配 "MYW Pkg +" 例如, 你知道为什么它不起作用吗?
更多代码:
chain 是数组,其值类似于 "MYW Pkg,"
Pattern patPackageDescription = Pattern.compile("([A-Z]{3})+(\s)+([A-Za-z])+(\s)+(\+)");
for (int i = 0; i < chain.length; i++) {
Matcher matPackageDescription = patPackageDescription
.matcher(chain[i]);
if (matPackageDescription.matches()) {
String space = String.format("%1$-" + 50 + "s",
chain[i].toString());
a.append(space + "|\n");
}
}
此致。
matches()
方法尝试将整个字符串与模式匹配,要匹配字符串的一部分,您需要使用 find()
方法。
String str = "MYW Pkg, MYW Pkg + Quick Service Dining, MYW Pkg + Dining, MYW Pkg + Deluxe Dining,";
Pattern patPackageDescription = Pattern.compile("([A-Za-z]{3}\s)+\+");
Matcher matPackageDescription = patPackageDescription.matcher(str);
while (matPackageDescription.find()) {
System.out.println(matPackageDescription.group());
}
输出:
MYW Pkg +
MYW Pkg +
MYW Pkg +
查看
您的问题是您使用的 Matcher.matches()
需要完全匹配,如果您可以使用 find()
进行部分匹配或添加 .*
以匹配搜索字符串后的任何内容.
([A-Z]{3})+(\s)+([A-Za-z]{3})+(\s)+(\+).*