我有以下几个条件:
asc_epsWarn_mu8 # I want asc and epsWarn
asc_ger_phiK_mi16 # I want asc and ger_Phik
ARSrt_FAC_RED5_DSR_AU16 # I want ARSrt and FAC_RED5_DSR
基本上,我希望第一个_
之前的字符在一个组中,第一个和最后一个下划线_
之间的所有字符在第二个组中。你知道吗
我对regex不熟悉。是否可以为上述所有字符串编写一个正则表达式。我能想到的最好办法就是
(\w+)_(\w+)_(\w+)
但它不起作用。什么是合适的正则表达式?你知道吗
您可以将此正则表达式与2个捕获组一起使用:
RegEx Demo
正则表达式详细信息:
^
:开始([^_]+)
:捕获组#1以匹配1+非下划线字符_
:匹配一个-
(.+)
:捕获组#2以匹配任何字符的1+,直到下一个匹配为止_
:匹配一个-
[^_]*
:匹配0个或更多非下划线字符$
:结束尝试使用此模式:
示例脚本:
下面是regex模式的简要说明:
wordcharacter
\w
也匹配下划线。你知道吗如果要匹配不带下划线的单词字符,可以使用否定字符类并匹配不带下划线的非空白字符
[^\W_]
对于第二个组,可以使用两个具有重复模式的捕获组:
^
字符串开头([^\W_]+)_
Match 1+乘以除第1组中的下划线以外的单词字符,Match underline(
捕捉组2(?:[^\W_]+_)*
重复0多次匹配单词char,除了下划线,然后是下划线)
关闭组2[^\W_]+
匹配除下划线以外的单词字符的1+倍$
字符串结尾Regex demo
相关问题 更多 >
编程相关推荐