-2

使用 Ruby,所以我认为那是 Perl 正则表达式。例子:

电子邮件地址:user123@gmail.com
帐单地址:

哈里·史密斯
3423我的车道
某些城市,CA 94105
美国

我要匹配

E-mail Address: user123@gmail.com

Billing Address:

Harry Smith
3423 My Lane
SOME CITY, CA 94105
United States

有任何想法吗?

这是我现在所拥有的(由 ka 提供):

/(.+?):(?:\s+)?([\s\S]+?)\r?\n(?=\r?\n)/g

现在唯一的问题是它不会在该换行符处停止匹配 user123@gmail.com

4

2 回答 2

1

带有基本正则表达式的地址模式::\s+([a-zA-Z\d'-,\s]*?)\s\s+
在此处解释演示:http ://regex101.com/r/pU8rY3

带有 LookArounds 的地址模式:(?<=Address:\n\n)[a-zA-Z\d'-,\s]*(?=\n\n)
在此处解释演示:http ://regex101.com/r/zE7nP6

要匹配:直到第一个非空白行之后的所有内容,然后匹配所有内容直到空白行:
RegEx with capture:(?<=:)([\S\s]*)\n\n([\s\S]*)(?=\n\n)
解释演示:http ://regex101.com/r/yN5kM2

匹配以字符结尾的第一行,:然后匹配所有内容,直到 2 个换行符:
RegExp:^(.+?):(?:\s+)?([\s\S]+?)\r?\n(?=\r?\n)
演示:http ://regex101.com/r/jW2hR8

第 5 次更新:匹配name: valuename: multiline_value
正则表达式:^(.+?):(?:[ \t]*(.+)|\s+([\s\S]+?)\r?\n)\r?\n
此处演示:http ://regex101.com/r/jR1iK6

于 2013-03-12T02:54:25.003 回答
0
/^.*:\n\n([\w\W]*?)\n(?=\n)/

http://rubular.com/r/BHEDW4sElE

基本上,这匹配行的开头,然后是冒号之前的所有内容,然后是两个换行符(一个空行),然后是一个以换行符结尾的文本块,然后是一个空行。

于 2013-03-12T02:54:09.367 回答