【问题标题】:Java regex to find a specific substring without alpha numeric characters before or after it [duplicate]Java正则表达式查找之前或之后没有字母数字字符的特定子字符串[重复]
【发布时间】:2017-08-03 06:43:41
【问题描述】:

对正则表达式不太熟悉,所以如果可能的话,可以使用一些指向正确方向的指针。

我有一些可能的字符串值,如下所示:

“88976756 ABC 33ddf33a24”

“89999ABC 3hhhj33”

“7ffhh7AB C78788sd”

我需要查找这些字符串中是否存在值 ABC,但其前面或后面没有字母数字字符。

在上面的例子中,只有第一个应该返回 ABC。 第二个例子前面有一个数字,第三个例子中间有一个空格。

如果有人知道这样做的方法或有一些关于最好方法的文档,我将不胜感激。

编辑: 上面的字符串可能有点简单。下面还有一些示例

"67676/'ABC'7866cc"

应该找到ABC,因为它之前或之后没有字母数字字符

"88xx#'\A2C"

应该找到A2C,因为之前或之后没有字母数字字符

“88xx#A2C&&&88”

应该找到A2C,因为之前或之后没有字母数字字符

“88xxA2C&&&88”

不应找到 A2C,因为它前面有一个字母数字字符

谢谢

【问题讨论】:

  • 并非如此,更新了上面可能的示例以澄清
  • 所有显示的案例都被单词边界覆盖。唯一的问题可能是_ABC_。如果 This 不匹配,您需要使用一些自定义边界,例如(?<!\w)ABC(?!\w)。哦,请将您的代码格式化为代码。

标签: java regex pattern-matching non-alphanumeric


【解决方案1】:

使用单词边界匹配器\b

你的正则表达式可以很简单

\bABC\b

【讨论】:

  • 假设我有 A23 而不是 ABC。单词边界可以匹配字母数字字符串吗?此外,运行正则表达式的完整字符串可以有任何字符组合,上面发布的可能有点过于简化。我会更新以包含更多示例
猜你喜欢
  • 2018-04-10
  • 2013-10-19
  • 2011-02-11
  • 1970-01-01
  • 2016-07-15
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多