regex - 如何查找包含大小有限的字符串的单词

标签 regex

我需要找到输入文本中包含 (?i:val) 并且不再是 5 个字符的所有单词。 到目前为止我得到: \b([a-zA-Z]*(?i:val)[a-zA-Z]*){1,4}\b

如果我们查看此示例文本:在计算机科学中,值是无法进一步计算的表达式(正常形式)。 Val 也是一个匹配

我得到 3 个匹配项(valueevaluatedVal),但是 evaluated 不应与模式匹配,因为它太长了。正确的方法是什么?

最佳答案

您的模式不考虑匹配单词的长度。

使用单词边界和前瞻,如下所示:

(?i)\b(?=\w*val)\w{1,5}\b

参见regex demo

正则表达式匹配:

  • \b - 前导字边界,因为下一个模式是 \w
  • (?=\w*val) - 前瞻,确保零个或多个单词字符后有一个 val 子字符串
  • \w{1,5} - 匹配 1 到 5 个单词字符
  • \b - 尾随单词边界,阻止长度超过 5 个字符的单词匹配

您可以使用 ASCII JS 版本的正则表达式:

/\b(?=[a-z]*val)[a-z]{1,5}\b/i

关于regex - 如何查找包含大小有限的字符串的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688017/

相关文章:

javascript - 在 JavaScript 中替换多个字符串的好方法

php - 如何 preg_match 第一次出现在字符串中

java - 单个正则表达式具有 CSV 和 xlsx 文件格式

java - 简单算术字符串的正则表达式

regex - 使用正则表达式从 Tensorflow 2 中的 tf.Tensor 中提取字符串?

javascript - 从随机字符串中删除非数字字符,除了第一次出现的#

regex - 使用POSIX正则表达式提取查询参数值

ruby - 如何检查 Ruby 中闭括号、圆括号或方括号的有效性

python - SCons 中错误的 D 依赖逻辑

python - 正则表达式替换为正确的间距