我有一个字符串"REC/LESS FEES/CODE/AU013423"
。
什么是匹配"REC"
和"AU013423"
的regEx表达式(任何未被斜杠/
包围的内容)
我正在使用/^>*/
,它在斜线内工作并匹配字符串,即使用此我能够找到"/LESS FEES/CODE/"
,但我想否定这一点以找到反向即REC
和AU013423
。
需要帮助。谢谢
答案 0 :(得分:2)
如果您知道自己只是在寻找字母数字数据,那么您可以使用正则表达式([A-Z0-9]+)/.*/([A-Z0-9]+)
如果匹配,您将拥有包含第一个&的两个组。最终文本字符串。
此代码打印RECAU013423
final String s = "REC/LESS FEES/CODE/AU013423";
final Pattern regex = Pattern.compile("([A-Z0-9]+)/.*/([A-Z0-9]+)", Pattern.CASE_INSENSITIVE);
final Matcher matcher = regex.matcher(s);
if (matcher.matches()) {
System.out.println(matcher.group(1) + matcher.group(2));
}
您可以根据需要调整正则表达式组以覆盖有效字符
答案 1 :(得分:1)
这是另一种选择:
String s = "REC/LESS FEES/CODE/AU013423";
String[] results = s.split("/.*/");
System.out.println(Arrays.toString(results));
// [REC, AU013423]
答案 2 :(得分:0)
^[^/]+|[^/]+$
匹配字符串中第一个或最后一个斜杠之后出现的任何内容(如果没有斜杠,则匹配整个字符串)。
迭代Java中字符串中的所有匹配项:
Pattern regex = Pattern.compile("^[^/]+|[^/]+$");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// matched text: regexMatcher.group()
// match start: regexMatcher.start()
// match end: regexMatcher.end()
}