java - 当开头或结尾为空时,正则表达式不匹配

标签 java regex string

这是我的正则表达式,因为我已将其输入到我的 java 文件中。

String myRegex = "(?<=[^a-zA-Z0-9])(target)(?=[^a-zA-Z0-9])";

如果我有一个字符串如下:

.target. - 它有效。

但是,如果我有一个字符串只是表示 target 它不起作用。如何修改正则表达式,以便如果字符串的开头或结尾没有任何内容,它仍然匹配?

编辑 - 示例。

_target - 应该成功!

target_ - 应该成功!

目标 - 应该成功!

目前,这些示例在当前的正则表达式中失败。

最佳答案

使用正则表达式交替将“输入开始”添加到您的后视中,并将“输入结束”添加到您的前视中(即 | 这是一个逻辑“或“):

String myRegex = "(?<=^|[^a-zA-Z0-9])target(?=[^a-zA-Z0-9]|$)";

你的正则表达式的问题是你的后面要求前面有一个不是字母/数字的字符。

这些环顾四周也匹配输入的开始/结束。

参见live demo .

关于java - 当开头或结尾为空时,正则表达式不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001926/

相关文章:

java - Java 中是否有任何方法可以在运行时访问有关类型的信息而无需完全加载类?

c++ - Boost:regex_search - 匹配括号之间的字符串

android - 将本地 HTML 文件(从 Assets )加载到字符串

regex - 查找并替换为可变文本

java - enableHiveSupport 在 java spark 代码中抛出错误

Java 与 JavaScript 对于相同的方程和输入值给出不同的结果

javascript - jQuery 验证器 - Decimal 验证不正确

c - 如何检查字符串是否包含特定字符?

java - 有效获取对象的属性或强制声明类属性

java - 在 Java 中解析字符串的有效方法是什么?