[英]regex pattern ending sub group
我可以有以下字符串: 案例 1:
VIR RECU 998721687978
DE: Mrs PAUL SMITH
564
MOTIF: ANY REASON
或情况2:
VIR RECU 998721687978
DE: Mrs PAUL SMITH
564
字符串中可能会缺少“MOTIF:...”部分
我正在寻找一个正则表达式来隔离 2 个先例的子字符串。 到目前为止,我有: ^VIR\\sRECU\\s(\\d+)\\nDE:\\s(.*)(\\nMOTIF:\\s(.*))
适用于案例 1 但不适用于案例 2。如果我在像^VIR\\sRECU\\s(\\d+)\\nDE:\\s(.*)(\\nMOTIF:\\s(.*))?
这样的 'motif' 捕获组后面有一个问号^VIR\\sRECU\\s(\\d+)\\nDE:\\s(.*)(\\nMOTIF:\\s(.*))?
那么这个群体永远不会孤立
我想问题来自 (.*) 组,但无法弄清楚如何解决它。
是否可以 ? 或者我应该有 2 个不同的正则表达式,每个案例 1 个?
我在带有 preg_math() 函数的 php 上使用这些正则表达式。
我想要的结果是998721687978
, Mrs PAUL SMITH 564
和ANY REASON
值
您可以使用
^VIR\s+RECU\s+(\d+)\nDE:\s+([\s\S]*?)(\nMOTIF:\s+(.*))?$
正则表达式详情
^
- 字符串的开始VIR\\s+RECU\\s+
- VIR
,1+ 个空格, RECU
和 1+ 个空格(\\d+)
- 第 1 组:一位或多位数字\\nDE:
- 换行符和DE:
子字符串\\s+
- 1+ 个空格([\\s\\S]*?)
- 第 2 组:任何 0+ 个字符,尽可能少(\\nMOTIF:\\s+(.*))?
- 一个可选的捕获组 #3:
\\nMOTIF:
- 换行符和MOTIF:
字符串\\s+
- 1+ 个空格(.*)
- 第 4 组:除换行符以外的任何 0+ 个字符,尽可能多$
- 字符串的结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.