【发布时间】:2018-12-31 10:33:23
【问题描述】:
我正在尝试使用正则表达式匹配器 &pattern 从字符串中提取几个单词。我确实花了一些时间来制作我正在使用的正则表达式,但这并没有按预期工作,任何帮助将不胜感激。
我创建了我正在使用的正则表达式,但这并没有按预期工作,一些帮助会很棒。我能够从我想要的单词中提取字符,但不是整个单词。
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main (String[] args){
String mebo = "1323 99BIMCP 1 2 BMWQ-CSPS-D1, 0192, '29229'";
Pattern pattern = Pattern.compile("[((a-zA-Z1-9-0)/W)]");
Matcher matcher = pattern.matcher(mebo);
while (matcher.find()) {
System.out.printf("Word is %s %n",matcher.group(0));
}
}
}
这是当前输出:
字是 1 字是 3 字是 2 字是 3 字是 9 字是 9 字 是 B 字是 I 字是 M 字是 C 字是 P 字是 1 字是 2 字是 B 字是 M 字是 W 字是 Q 字是 - 字是 C 字 是 S 字是 P 字是 S 字是 - 字是 D 字是 1 字是 0 字是 1 字是 9 字是 2 字是 2 字是 9 字是 2 字 是 2 字是 9
============
我的期望是迭代整个单词,例如:
字符串 mebo = "1323 99BIMCP 1 2 BMWQ-CSPS-D1, 0192, '29229'"
word is 1323 word is 99BIMCP word is 1 word is 2 word is BMWQ-CSPS-D1 单词是 0192 单词是 29229
【问题讨论】:
-
我没有正确阅读您的问题,因为 Aleksei 在上面提出了建议,但为了将来参考,我认为
/W应该是\W甚至可能是\\W因为你必须逃脱字符 -
使用这个
[\w-]+regex101.com/r/rPDZwg/2 -
@AlekseiMatiushkin 我认为你需要在你的模式中添加双重转义
-
@CodeManiac 你建议的模式有问题。
-
谢谢大家,@Code Maniac 的建议完美无缺,您使用的工具很棒。