java - 使用正则表达式解析文本适用于在线测试,但不适用于此代码

标签 java regex

我在 Java 中尝试了这个正则表达式:

Pattern orderCheck = Pattern.compile("^([\\-\\+])?(created|title|price|creation)$", Pattern.CASE_INSENSITIVE);
orderCheck.matcher(value).matches();

奇怪的是:

  • 创作:作品
  • -创建:作品
  • +已创建:不起作用
  • 标题:作品
  • -标题:作品
  • +标题:不起作用
  • 等等..

+ 结果是正则表达式的未验证,但我不明白为什么。

使用这个online regex tester ,对于所有值来说它都完美地工作!

我也尝试过这个变体,但没有成功:

  • ^[\-\+]?(创建|标题|价格|创建)$
  • ^[-+]?(创建|标题|价格|创建)$
  • ^(-+)?(创建|标题|价格|创建)$
  • ^(-|+)?(创建|标题|价格|创建)$
  • ^[-|+]?(创建|标题|价格|创建)$
  • ^(\-|\+)?(创建|标题|价格|创建)$

满足我的需要的正确正则表达式是什么?我看不出我哪里错了。

最佳答案

它有效。也许您忘记了值末尾/开头的空格字符?你的模式看起来不错。

test res

关于java - 使用正则表达式解析文本适用于在线测试,但不适用于此代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364000/

相关文章:

java - GWT 谷歌地图 : setCenter: not a LatLng or LatLngLiteral: in property lat: not a number

java - DataStax Cassandra Exception : InvalidRequestException(why:there were 2 markers(? ) 在 CQL 中但有 3 个绑定(bind)变量

javascript - 如何在 JS 正则表达式中表达 "iPhone10,3"、 "iPhone10,6"、 "iPhone11,2"、 "iPhone11,4"、 "iPhone11,8"中的任何一个

javascript - 正则表达式模式中的可选子字符串

python - 如何使用python从以列中的数字开头的字符串中提取数字

regex - 匹配基本 url 正则表达式

java - android MainActivity中的空指针异常

java - 发送短信 - 正文未在 Lollipop 中传输

javascript - 解析名称以使字符大写和小写

java - IntelliJ 中最常用的字符串