RegEX:如何匹配未被包围的字符串

时间:2010-09-02 11:49:58

标签: java regex

我有一个字符串"REC/LESS FEES/CODE/AU013423"

什么是匹配"REC""AU013423"的regEx表达式(任何未被斜杠/包围的内容)

我正在使用/^>*/,它在斜线内工作并匹配字符串,即使用此我能够找到"/LESS FEES/CODE/",但我想否定这一点以找到反向即RECAU013423

需要帮助。谢谢

3 个答案:

答案 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()
}