首页 > 解决方案 > 在java中被其他文本包围时查找模式

问题描述

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

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

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

标签: javaandroidregex

解决方案


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

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

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


推荐阅读