我有多个要解析的字符串。该文本可以是多行的,也可以不是。 此外,某些部分可能不存在。我有一些样本来了解我的需要。
样品;
1-singleline)00026A123456123456789012741852
2-multiline)00030A789ABC210987654321258369X123
X是单独的组
我尝试使用这个正则表达式:(?<group1>.*)(?:[X](?<group2>.*))
答案 0 :(得分:1)
如果只有1个X
分隔这些组,或者它是第一个始终将这些组分开的X
,则可以使用
^(?<group1>.*?)(?:X(?<group2>.*))?$
请参阅regex demo。
第一组模式应为惰性点.*?
,第二组模式应包含可选的非捕获组(?:....)?
。
当文本没有X...
时,第二个捕获组被视为非参与,因此 null 或为空(取决于您使用正则表达式的位置)。
<强>详情:
^
- 字符串开头(?<group1>.*?)
- 任意0个字符(或排除换行符号,取决于正则表达式引擎)尽可能少到第一个(?:X(?<group2>.*))?
- X
的可选序列,后跟任意多个字符,最多$
- 字符串的结尾。