我有以下文字。我希望捕获模式ddd-dd-ddd
后跟所有文本,直到我再次点击ddd-dd-ddd
。
我正在尝试使用这个正则表达式
\b[0-9]{3}-[0-9]{2}-[0-9]{3}\b.*
它匹配982-99-122后跟句子,直到它命中换行。然后再匹配第二个数字586-33-453,然后是同一行上的文本。但它无法捕获下一行继续的文本。
如果我从此字符串中删除换行符,它将仅捕获第一个数字982-99-122并捕获整个字符串,即与第二个数字586-33-453不匹配
我应该如何解决这两个问题,1。当换行符是字符串的一部分时,以及2.当字符串没有换行符时。
982-99-122 (FCC 333/22) lube oil service pump 1b discharge lube oil service pump
aaa bb dsdsd
586-33-453 Matches exactly 3 times 0-e single character in the range between
dfldfldflkdf 545-66-666 sdkjsl () jdfkjd-kfdkf sdfl
848-99-040 sdsd"" df
dfdf
答案 0 :(得分:1)
好像你想要
\b([0-9]{3}-[0-9]{2}-[0-9]{3})\b([\s\S]*?)(?=\b[0-9]{3}-[0-9]{2}-[0-9]{3}\b|$)?
请参阅regex demo
<强>详情
\b
- 字边界([0-9]{3}-[0-9]{2}-[0-9]{3})
- 3位数字,-
,2位数字,-
和3位数字\b
- 字边界([\s\S]*?)
- 第2组:任意0个字符,尽可能少(?=\b[0-9]{3}-[0-9]{2}-[0-9]{3}\b|$)?
- 一个积极的前瞻,需要3个diigts,-
,2位数,-
和3个数字作为整个单词或紧靠当前位置右侧的字符串结尾