【发布时间】:2017-01-05 23:30:23
【问题描述】:
想知道是否有任何正则表达式专家可以帮助弄清楚如何创建正则表达式来解决这个问题。我被难住了。
我需要在这个多行文本的变体上匹配“CUST-X”..
"CUST-1 Some message\nLock-Id: Id74248cd199\n"
要求:
- “CUST-1”和“某些消息”可以用冒号 (:) 分隔。这 冒号是可选的。
- 之间可以没有、一个或多个空格 两个字符串。
- “CUST-1”前面可以有任意数量的空格。
- “CUST-1”之后需要有一条消息。消息是 任意,消息没有模式。
- 忽略第一个之后的任何其他 CUST-XX。仅匹配第 1 次。
- 最好使用 java 正则表达式。
例子:
应与“CUST-1”匹配的测试字符串
"CUST-1 Some message\nLock-Id: Id14248cd199"
" CUST-1 another message\nLock-Id: Id14258cd199"
"CUST-1:I like apples\nLock-Id: Id84248cd199"
"CUST-1: peaches are sweet\nLock-Id: Id78248cd199"
"CUST-1: pies are great\nLock-Id: Id71248cd199"
应该匹配“CUST-X”,但不匹配“CUST-X”
"CUST-1: Nice message about CUST-2\nLock-Id: Id74248cd199\n"
不应匹配“CUST-1”的测试字符串
"CUST-1\nLock-Id: Id78248cd199"
"CUST-1 \nLock-Id: Id74248cd199"
"CUST-1:\nLock-Id: Id84248cd199"
"CUST-1: \nLock-Id: Id94248cd199"
我想出的结局是..
^\\s*([A-Z]+-[0-9]+):?\\s+\\S+
但这也将匹配我不希望匹配发生的情况。
【问题讨论】:
标签: regex