为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式否定模式

正则表达式否定模式

FFIVE 2022-01-06 17:01:53
我在获取这个正则表达式的另一面时遇到了麻烦。Stranger Number is %19. Friend Number is %30.我当前的正则表达式是这样(%[0-9]+) 所以当我运行这个正则表达式时。唯一突出显示的是%30和%19。Strange Number is %19. Friend Number is %30.我只是想反过来,%19 和 %30 不是突出显示的,而其他所有内容都突出显示。我努力了。这个,[^%](?![0-9])但我没有得到我预期的输出。谢谢您的帮助!
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

为了完整性以及早期版本的 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 );

   }


查看完整回答
反对 回复 2022-01-06
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

根据您想要做什么,您不必为(%[0-9]+).


例如,如果您计划提取与反转正则表达式匹配的所有子字符串,则可以使用yourString.split("%[0-9]+").


如果您打算%...通过拆分字符串来提取所有内容,则yourString.split(invertedRegex)可以改用匹配器。

取自这个答案的代码。


String[] matches = Pattern.compile("%[0-9]+").matcher(yourString)

                          .results().map(MatchResult::group)

                          .toArray(String[]::new);


查看完整回答
反对 回复 2022-01-06
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信