我试图从以下示例字符串中提取(全部在一行中):
First Note Type[br]03/11/2015 12:51:24 USR123[br]Now is the time for all good men to come to the aid of their country[br]Second Note Type[br]03/11/2015 16:26:03 USR456[br]The quick brown fox jumped over the lazy dog.
2场比赛与每组5个,例如:
匹配1 :
匹配2 :
到目前为止,我只使用以下表达式设法匹配前4组:
([a-zA-Z\s]+)\\[br\\\]([0-9]+/[0-9]+/[0-9]+)\s+([0-9]+:[0-9]+:[0-9]+)\s+([a-zA-Z0-9]+)\\[br\\]
无法获得第五个(G5)群组,我尝试添加(.+)
,但只会导致一个匹配,而不是n
有人能指出我正确的方向吗?
答案 0 :(得分:0)
使用(.+)
时,它会尽可能多地匹配换行符以外的1个或多个符号(因此,它会耗尽所有内容直到行尾)。
您可以将其与以下正则表达式匹配:
([a-zA-Z\s]+)\[br]([0-9]+/[0-9]+/[0-9]+)\s+([0-9]+:[0-9]+:[0-9]+)\s+([a-zA-Z0-9]+)\[br]([^[]*(?:\[(?!br])[^[]*)*(?:\[br])?)
请参阅regex demo
我添加了([^[]*(?:\[(?!br])[^[]*)*(?:\[br])?)
部分。它匹配[br]
以外的所有内容。更详细的细分:
[^[]*
- 匹配[
(?:\[(?!br])[^[]*)*
- 匹配0个或更多个序列...
\[(?!br])
- 文字[
未跟br]
[^[]*
- 除[
以外的0个或多个字符。(?:\[br])?
- 匹配文字序列[br]
使用您的字符串作为输入获得的结果: