【问题标题】:Finding a pattern while being surrounded by other text in java在java中被其他文本包围时查找模式
【发布时间】:2020-01-11 10:06:11
【问题描述】:

我有一个找到特定模式的正则表达式。这在文本被隔离时有效。但是,我希望它在被其他文本包围时工作,并以某种方式从那里提取它。这是我想出的模式。例如,如果 9708/32/M/J/15 是文本,它会找到它。但如果是 awfawf9708/32/M/J/15awfafwaf 就找不到了。

Pattern pattern = Pattern.compile("^\\d{4}/\\d{2}/\\w/\\w/\\d{2}$");

如何修改它以使其在两种情况下都能正常工作?

【问题讨论】:

  • 你可以省略锚^$
  • 不起作用。结果相同
  • 你试过这样吗? ideone.com/pXAkIE
  • 您可能正在使用Matcher.matches(),它试图匹配整个字符串。如果使用Matcher.find(),则可以匹配部分文本。
  • This 为我工作:\d{4}\/\d{2}\/\w\/\w\/\d{2}。我不是RegEx 也不是Java 专家,但据我了解,您反转了正斜杠的转义。根据@Thefourthbird,^$ 确实可以省略。

标签: java android regex


【解决方案1】:

^ 断言字符串的开头。 $ 断言字符串结束。括号用于捕获其中匹配的内容。这两种方法都可以:

(\d{4}/\d{2}/\w/\w/\d{2})
^.*(\d{4}/\d{2}/\w/\w/\d{2}).*$

我不确定您为什么要转义反斜杠。如果在程序中使用正斜杠作为分隔符,您可能需要转义正斜杠。我更喜欢使用 ~ 作为分隔符,因为它是一个罕见的字符。

【讨论】:

  • 我在 android studio 上收到非法转义字符的错误。分隔反斜杠可以解决问题
猜你喜欢
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 2010-09-16
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多