正则表达式-如何按分隔符拆分字符串,如果没有分隔符 return 整个

Regex-How to split string by delimiter and if there is no delimiter return whole

我想从如下字符串中提取一些信息:

ksdfXX2344_vvs_gfedfg
ksdfXX2344

例如,从上面的字符串中提取单词ksdfXX2344
目前我有:

(.*?)(_.*)

可以提取出情况1中的单词,但是不能提取出没有分隔符的字符串_。 如果里面没有定界符,如何提取单词? 有什么建议吗?

非常感谢!

像这样:

^[^_]+(?=_|$)

ksdfXX2344

部分

(?=_)

积极的展望

https://regex101.com/r/JPrilr/2

不拆分,替换:

Search: '_.*'
Replace: ''

例如 java:

String prefix = str.replaceAll("_.*", "");

或python:

prefix = re.sub(r'_.*', '', str)

只匹配前缀:

^[^_]*

这会匹配开头不是下划线的所有内容,因此如果没有下划线,匹配将在第一个下划线或输入结束之前停止。

您可以将第一个捕获组与 negated character class [^_]+ 一起使用,并且可以选择 ? 匹配下划线,然后匹配直到字符串结尾。

^([^_]+)(?:_.*)?$

看到一个Regex demo