试图将一个正则表达式放在一起,返回 _ 和 _$ 之间的字符串(其中 $ 是字符串的结尾)。
输入:
abc_def_ghi_
所需的正则表达式结果:
def_ghi
我已经尝试了很多组合,例如 thsi。
((([^_]*){1})[^_]*)_$
任何帮助表示赞赏。
注意:上面的正则表达式返回 abc_def,而不是所需的 def_ghi。
试图将一个正则表达式放在一起,返回 _ 和 _$ 之间的字符串(其中 $ 是字符串的结尾)。
输入:
abc_def_ghi_
所需的正则表达式结果:
def_ghi
我已经尝试了很多组合,例如 thsi。
((([^_]*){1})[^_]*)_$
任何帮助表示赞赏。
注意:上面的正则表达式返回 abc_def,而不是所需的 def_ghi。
所以它是第一个_
和最后一个_
(不包括)之间的一切?
然后尝试
(?<=_).*(?=_$)
(希望你没有使用 JavaScript)
解释:
(?<=_) # Assert that the previous character is a _
.* # Match any number of characters...
(?=_$) # ... until right before the final, string-ending _
您可以尝试利用运营商的贪婪来发挥自己的优势:
^.*?_(.*)_$
匹配从开头(非贪婪)到下划线的所有内容,从下划线到字符串的结尾,它期望和下划线,然后是字符串的结尾,并在第一次匹配中捕获它。
^ Beginning of string
.*? Any number of characters, at least 0
_ Anchor-tag, literal underscore
(.*) Any number of characters, greedy
_ Anchor-tag, literal underscore
$ End of string
我在一个更大的日志条目中搜索这个:
"threat_name":"PUP.Optional.Wajam"
该格式将字段名称用双引号括起来,然后是冒号,然后是双引号中的值。
这是我最终避免标点符号破坏正则表达式的结果..
threat_name["][:]["](?P<signature>.*?)["]
(来自 regex101.com)
threat_name
从字面上匹配字符threat_name(区分大小写)["]
匹配下面列表中的单个字符"
列表中的单个字符 " 字面意思(区分大小写)[:]
匹配下面列表中的单个字符:
文字字符:["]
匹配下面列表中的单个字符"
列表中的单个字符 " 字面意思(区分大小写)(?P<signature>.*?)
命名捕获组签名.*?
匹配任何字符(换行符除外)Quantifier: *?
零到无限次之间,尽可能少,按需扩展[懒惰]["]
匹配下面列表中的单个字符"
列表中的单个字符 " 字面意思(区分大小写)