试图将一个正则表达式放在一起,它返回_和_ $之间的字符串(其中$是字符串的末尾)。两个分隔符之间的字符
输入:
abc_def_ghi_
所需的正则表达式outcoume:
def_ghi
我已经尝试了不少组合,如thsi。
((([^_]*){1})[^_]*)_$
任何帮助表示赞赏。
注意:上面的正则表达式返回abc_def,而不是所需的def_ghi。
试图将一个正则表达式放在一起,它返回_和_ $之间的字符串(其中$是字符串的末尾)。两个分隔符之间的字符
输入:
abc_def_ghi_
所需的正则表达式outcoume:
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 _
你可以尝试使用运营商的greedyness你的优势:
^.*?_(.*)_$
匹配从开始(非贪婪)到下划线,从该下划线到字符串末尾的所有内容(预期和下划线),然后匹配字符串的末尾,并将其捕获到第一个比赛。
^ 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
我不确定你为什么使用.split()。使用与提及的正则表达式匹配的常规匹配应返回一个捕获的组,您正在寻找的组。 – 0xCAFEBABE
我正在寻找一个更大的日志条目中的这样:
"threat_name":"PUP.Optional.Wajam"
格式在双引号中的字段名称,然后一个冒号,然后在双引号中的价值。
这里是我结束了,以避免标点符号打破正则表达式..
threat_name["][:]["](?P<signature>.*?)["]
(从regex101。COM)
threat_name
字符threat_name字面上(区分大小写)["]
匹配存在于低于"
单个字符列表中的“字面(区分大小写)[:]
匹配下面列表中的单个字符:
字面字符:["]
匹配存在于低于"
单个字符列表中的“字面(区分大小写)的列表中的单个字符(?P<signature>.*?)
命名捕获组签名.*?
匹配的任何字符(除新行)Quantifier: *?
在零和无限次之间,尽可能少的次数, 根据需要扩展[懒惰]["]
匹配下面列表中的单个字符"
列表中的一个字符“的字面(区分大小写)
不能得到那个工作 – sgtz
对于我这个返回{” abc_,‘_’}。 – sgtz
@sgtz:您需要使用'Regex.Match()'方法,而不是'Regex.Split()'。 –