正则表达式否定模式
Regex Negate Pattern
我无法获取此正则表达式的另一面。
Stranger Number is %19. Friend Number is %30.
我当前的正则表达式是这样的 (%[0-9]+)
所以当我 运行 这个正则表达式。唯一突出显示的是 %30 和 %19.
Strange Number is %19. Friend Number is %30.
我只想反过来,其中 %19 和 %30 不是突出显示的,而其他所有内容都突出显示。
我试过了。这个 [^%](?![0-9])
但我没有得到我预期的输出。
感谢您的帮助!
取决于你想做什么,你不必为 (%[0-9]+)
.
找到倒置的正则表达式
例如,如果您计划提取所有与倒置正则表达式匹配的子字符串,您可以使用 yourString.split("%[0-9]+")
.
如果您计划通过使用 yourString.split(invertedRegex)
拆分字符串来提取所有 %...
,您可以改用匹配器。
代码取自 this answer.
String[] matches = Pattern.compile("%[0-9]+").matcher(yourString)
.results().map(MatchResult::group)
.toArray(String[]::new);
为了完整性,以及 Java 早期版本的完整性,您可以只使用 Matcher
和 while
循环来提取与模式匹配的字符串。
public static void main( String[] args ) {
String test = "Number %1. And number %2 also.";
Matcher matcher = Pattern.compile( "%[\d]+" ).matcher( test );
ArrayList<String> results = new ArrayList<>();
while( matcher.find() )
results.add( matcher.group() );
System.out.println( results );
}
我无法获取此正则表达式的另一面。
Stranger Number is %19. Friend Number is %30.
我当前的正则表达式是这样的 (%[0-9]+)
所以当我 运行 这个正则表达式。唯一突出显示的是 %30 和 %19.
Strange Number is %19. Friend Number is %30.
我只想反过来,其中 %19 和 %30 不是突出显示的,而其他所有内容都突出显示。
我试过了。这个 [^%](?![0-9])
但我没有得到我预期的输出。
感谢您的帮助!
取决于你想做什么,你不必为 (%[0-9]+)
.
例如,如果您计划提取所有与倒置正则表达式匹配的子字符串,您可以使用 yourString.split("%[0-9]+")
.
如果您计划通过使用 yourString.split(invertedRegex)
拆分字符串来提取所有 %...
,您可以改用匹配器。
代码取自 this answer.
String[] matches = Pattern.compile("%[0-9]+").matcher(yourString)
.results().map(MatchResult::group)
.toArray(String[]::new);
为了完整性,以及 Java 早期版本的完整性,您可以只使用 Matcher
和 while
循环来提取与模式匹配的字符串。
public static void main( String[] args ) {
String test = "Number %1. And number %2 also.";
Matcher matcher = Pattern.compile( "%[\d]+" ).matcher( test );
ArrayList<String> results = new ArrayList<>();
while( matcher.find() )
results.add( matcher.group() );
System.out.println( results );
}