使用Ruby,所以我认为这是Perl正则表达式。例如:
E-mail Address: user123@gmail.com Billing Address: Harry Smith 3423 My Lane SOME CITY, CA 94105 United States
我想匹配
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
答案 0 :(得分: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与捕获:(?<=:)([\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: value
或name: multiline_value
RegExp:^(.+?):(?:[ \t]*(.+)|\s+([\s\S]+?)\r?\n)\r?\n
在这里演示:http://regex101.com/r/jR1iK6
答案 1 :(得分:0)
/^.*:\n\n([\w\W]*?)\n(?=\n)/
http://rubular.com/r/BHEDW4sElE
基本上,这匹配行的开头,然后匹配冒号,然后是两个换行符(一个空行),然后是一个以换行符结尾的文本块,后跟一个空行。