我需要使用正则表达式从字符串中获取一些值。问题是,这对我来说很复杂。
例如,我有一个这样的字符串:
oneWord [first, second, third]我的产出应该是:
first
second
third所以我需要介于和。另外,在[]之间可以有不同的单词数。
尝试使用regex创建者,但这并不十分准确:
String re1=".*?"; // Non-greedy match on filler
String re2="(?:[a-z][a-z]+)"; // Uninteresting: word
String re3=".*?"; // Non-greedy match on filler
String re4="((?:[a-z][a-z]+))"; // Word 1
String re5=".*?"; // Non-greedy match on filler
String re6="((?:[a-z][a-z]+))"; // Word 2
String re7=".*?"; // Non-greedy match on filler
String re8="((?:[a-z][a-z]+))"; // Word 3发布于 2014-11-06 13:03:03
我会这样做,只需一行:
String[] words = str.replaceAll(".*\\[|\\].*", "").split(", ");第一个replaceAll()调用去掉了前面和后面的包装器,split()将剩下的内容分解成单独的单词。
发布于 2014-11-06 13:02:44
您可以尝试下面的regex,并从组索引1中获取您想要的单词。
(?:\[|(?<!^)\G),? *(\w+)(?=[^\[\]]*\])演示
Java正则表达式是,
(?:\\[|(?<!^)\\G),? *(\\w+)(?=[^\\[\\]]*\\])示例:
String s = "oneWord [first, second, third] foo bar [foobar]";
Pattern regex = Pattern.compile("(?:\\[|(?<!^)\\G),? *(\\w+)(?=[^\\[\\]]*\\])");
Matcher matcher = regex.matcher(s);
while(matcher.find()){
System.out.println(matcher.group(1));
}输出:
first
second
third
foobar发布于 2014-11-06 13:04:59
你应该用这个字符串。
String[] word=str.replaceAll(“.[x].”,"").split(",");
希望能帮上忙。
https://stackoverflow.com/questions/26780114
复制相似问题