java正则匹配字符串指定字符前面的数据
时间: 2024-10-13 07:09:56 浏览: 13
在Java中,如果你想要通过正则表达式匹配某个字符(例如 `&`)前面的所有数据,你可以使用正向前瞻 `(?!...)` 或者前向引用 `\K` 技巧。以下是两个例子:
1. 使用正向前瞻 `(?!...)`:
```java
String regex = "(?<=<[^>]*>)&";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(inputString);
while (matcher.find()) {
System.out.println(matcher.group(0)); // 输出 & 前面的数据
}
```
此处的正则表达式 `(?!<[^>]*)` 确保了 `&` 前面没有其他 `<` 开始的标签,然后捕获 `&` 前面的文本。
2. 使用前向引用 `\K`:
```java
String regex = "<.*>(\\K[^<&]*)&";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(inputString);
while (matcher.find()) {
System.out.println(matcher.group(1)); // 输出 & 前面的数据
}
```
`\K` 会清除之前匹配的历史,从当前位置开始匹配。这里的正则表达式会找到第一个 `&` 之前的非 `<` 和 `&` 字符。
阅读全文