我在获取此正则表达式的另一面时遇到麻烦。
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 :(得分:1)
根据您要执行的操作,您不必为(%[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);
答案 1 :(得分:1)
为了完整起见,以及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 );
}