如何使用正则表达式从字符串中提取子字符串?

时间:2015-06-04 07:02:39

标签: regex string parsing

我有这个字符串

类型:图书年份:1991题目:“This is book 1”ISBN:1234567890页数:500作者:“Smith,John”;“Brown,Jack”媒体类型:PaperBack

我想提取以下子字符串

Book
1991
"This is book 1"
1234567890
500
"Smith, John"
"Brown, Jack"
PaperBack

到目前为止,我已使用以下模式提取前2个字符串

(\w+:)([\w\s]*\b)(\w+:)([\d\s]*\b)(\w+\b:)

我有很多尝试提取字符串“这是书1”,但我似乎无法找出下一个组模式。我尝试了这个("[^"]*"),但它返回没有匹配,我似乎无法找到其余的字符串。

非常感谢您的投入。

2 个答案:

答案 0 :(得分:0)

您可以尝试下面的正则表达式。

@"(?<=: ).*?(?=\s+(?:\w+:)|$)"

在c#中,您可以使用

@"(?<=:\s+).*?(?=\s+(?:\w+:)|$)"

DEMO

答案 1 :(得分:0)

以下正则表达式将完成您正在寻找的工作。

\w+:\s*(\w+|".+?(?="\s)")

要了解它是如何工作或匹配的,请查看以下链接。右上角的“说明”框了解正则表达式。 (如果方框是空的,请手动输入字符串和正则表达式)

https://regex101.com/r/rW8eB9/1