我有这个文字 XX_YYY~foo~foo~foo ,我想分组 XX 和 YYY 并跳过休息。 X和Y可以是一个或多个。
我已经尝试了(.*)_(.*)~.*?
,但没有花费最后~
。
这有效(.*)_(.*)(~.*)(~.*)(~.*)
但在XX和YY之后可能没有任何内容。
答案 0 :(得分:1)
请记住.
可以匹配任何字符,因此它不适合具有某种分隔符的字符串(除非您提取可能包含这些分隔符的子值)。
在你的情况下,似乎(如果你真的必须使用正则表达式),你可能依赖于^
锚点和几个否定的字符类:
^([^_~]+)_([^~]+)
请参阅regex demo
模式匹配
^
- 字符串开头([^_~]+)
- 第1组匹配_
和~
以外的一个或多个字符_
- 下划线([^~]+)
- 第2组捕获除了波浪号以外的1个或多个字符。但是,如果您可以访问环境中的字符串方法,则字符串拆分会更自然。
如果您的模式用于某种需要完整字符串匹配的方法,请将.*
添加到上述模式的末尾(如果字符串输入可以有换行符,请确保dotall模式已启用)。