我在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.+)
答案 0 :(得分:0)
您的问题实际上有点棘手,因为您希望匹配CSV数字列表中任意位置的数字40。也就是说,以下所有三行都应匹配:
Modules = "40,50,4"
Modules = "30,40"
Modules = "10,40,50"
要处理此问题,并假设CSV列表没有空格或小数,我们使用\b40\b
作为模式。考虑这种模式:
Modules = ".*?\b40\b.*?"
答案 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 +字符。