正则表达式-如何按分隔符拆分字符串,如果没有分隔符 return 整个
Regex-How to split string by delimiter and if there is no delimiter return whole
我想从如下字符串中提取一些信息:
ksdfXX2344_vvs_gfedfg
ksdfXX2344
例如,从上面的字符串中提取单词ksdfXX2344
。
目前我有:
(.*?)(_.*)
可以提取出情况1中的单词,但是不能提取出没有分隔符的字符串_
。
如果里面没有定界符,如何提取单词?
有什么建议吗?
非常感谢!
像这样:
^[^_]+(?=_|$)
ksdfXX2344
部分
(?=_)
是积极的展望
不拆分,替换:
Search: '_.*'
Replace: ''
例如 java:
String prefix = str.replaceAll("_.*", "");
或python:
prefix = re.sub(r'_.*', '', str)
到只匹配前缀:
^[^_]*
这会匹配开头不是下划线的所有内容,因此如果没有下划线,匹配将在第一个下划线或输入结束之前停止。
您可以将第一个捕获组与 negated character class [^_]+
一起使用,并且可以选择 ?
匹配下划线,然后匹配直到字符串结尾。
^([^_]+)(?:_.*)?$
看到一个Regex demo
我想从如下字符串中提取一些信息:
ksdfXX2344_vvs_gfedfg
ksdfXX2344
例如,从上面的字符串中提取单词ksdfXX2344
。
目前我有:
(.*?)(_.*)
可以提取出情况1中的单词,但是不能提取出没有分隔符的字符串_
。
如果里面没有定界符,如何提取单词?
有什么建议吗?
非常感谢!
像这样:
^[^_]+(?=_|$)
ksdfXX2344
部分
(?=_)
是积极的展望
不拆分,替换:
Search: '_.*'
Replace: ''
例如 java:
String prefix = str.replaceAll("_.*", "");
或python:
prefix = re.sub(r'_.*', '', str)
到只匹配前缀:
^[^_]*
这会匹配开头不是下划线的所有内容,因此如果没有下划线,匹配将在第一个下划线或输入结束之前停止。
您可以将第一个捕获组与 negated character class [^_]+
一起使用,并且可以选择 ?
匹配下划线,然后匹配直到字符串结尾。
^([^_]+)(?:_.*)?$
看到一个Regex demo