我正在尝试使用 java regex 来标记任何语言源文件。我希望列表返回的是:
- 词(
[a-z_A-Z0-9]
) - 空间
- 任何
[()*.,+-/=&:]
一个字符 - 和引用的项目留在引号中。
这是我到目前为止的代码:
Pattern pattern = Pattern.compile("[\"(\\w)\"]+|[\\s\\(\\)\\*\\+\\.,-/=&:]");
Matcher matcher = pattern.matcher(str);
List<String> matchlist = new ArrayList<String>();
while(matcher.find()) {
matchlist.add(matcher.group(0));
}
例如,
"I" am_the 2nd "best".
返回:列表,大小 8
("I", ,am_the, ,2nd, ,"best", .)
这就是我想要的。但是,如果引用整个句子,句号除外:
"I am_the 2nd best".
返回:列表,大小 8
("I, ,am_the, ,2nd, ,best", .)
我希望它能够返回:列表,大小 2
("I am_the 2nd best", .)
如果这是有道理的。我相信它适用于我想要的一切,除了返回字符串文字(我想保留引号)。我从允许我实现这一目标的模式中遗漏了什么?
无论如何,如果有一个我看不到的更容易使用的模式,请帮助我。上面显示的模式是许多试验/错误的编译。非常感谢您的任何帮助。