找出Notepad ++中的sting是否包含使用正则表达式的特定数字

时间:2017-09-15 10:18:54

标签: regex

我在Notepad ++中有几行包含:

Modules = "3,40,40,40" Modules = "3,40,40,40,40,40,40" Modules = "3,15,15,15,15,15,15,15,15".

我想使用正则表达式只突出显示或计算包含数字40的那些。如何?这是我到目前为止所得到的:

(Modules\s=\s.+)

2 个答案:

答案 0 :(得分:0)

您的问题实际上有点棘手,因为您希望匹配CSV数字列表中任意位置的数字40。也就是说,以下所有三行都应匹配:

Modules = "40,50,4"
Modules = "30,40"
Modules = "10,40,50"

要处理此问题,并假设CSV列表没有空格或小数,我们使用\b40\b作为模式。考虑这种模式:

Modules = ".*?\b40\b.*?"

Demo

答案 1 :(得分:0)

如果引号之间没有浮点/双精度值,请使用

Modules\s=\s"[^"]*\b40\b[^"]*"

请参阅regex demo

<强>详情

  • Modules - 子字符串
  • \s=\s - 一个用{1}空格包围的=
  • " - 双引号
  • [^"]* - 除"
  • 以外的零个或多个字符
  • \b40\b - 40作为一个完整的词
  • [^"]* - 除"
  • 以外的零个或多个字符
  • " - 双引号

如果您只需要在逗号和字符串的开头/结尾之间匹配40,请使用

Modules\s=\s"(?:[^"]*,)?40(?:,[^"]*)?"

another demo。这里的区别是(?:[^"]*,)?40(?:,[^"]*)?(?:[^"]*,)?匹配除"以外的任何0+字符的可选序列,其后跟,(?:,[^"]*)?匹配可选的序列,后跟"以外的任何0 +字符。