这是我的正则表达式,因为我已将其输入到我的 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/