java - 正则表达式查找带有 __ 和多个 _ 的字符串,然后 __ 以获得所需的输出
问题描述
我正在尝试创建一个正则表达式来查找一个带有双下划线__
、多个下划线_
和另一个双下划线的字符串,__
并在最后一个分隔符之前提取部分__<string>
第一个分隔符应该是__
,然后是多个_
,字符串以__<String>
结果应该是第二个 __ 之前的字符串
示例1-UK__SATHISH_KUMAR__LONDON
应该导致UK__SATHISH_KUMAR
示例2-UK__SATHISH_KUMAR_MALE__LONDON
应该导致UK__SATHISH_KUMAR_MALE
public static final String RULE_FILE_NAME_PATTERN =
"(([a-zA-Z]+)__(([a-zA-Z]+_[a-zA-Z]+_[a-zA-Z]+_[a-zA-Z]+)|([a-zA-Z]+_[a-zA-Z]+_[a-zA-Z]+)|([a-zA-Z]+_[a-zA-Z]+)|([a-zA-Z]+)))(__[\\w]+)*";
这种模式有效,但由于 sonarqube 很长而失败,有人可以帮助获得更短的正则表达式吗?
解决方案
- 抱歉,英国只是一个例子,它可以是任何字符 ENGLAND__SATHISH_KUMAR__LONDON
还是不清楚
假设它可以任何单词字符,至少一个,你可以使用
(\w+__.*)__
您的问题需要精确,因为您在声明为第一个分隔符 __ 之前返回字符 UK
假设你总是想要 2 个字符才能做
(\w{2}__.*)__