Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在';之后匹配所有内容:';直到第一个非空行,然后只匹配除空行以外的所有内容_Ruby_Regex - Fatal编程技术网

Ruby 在';之后匹配所有内容:';直到第一个非空行,然后只匹配除空行以外的所有内容

Ruby 在';之后匹配所有内容:';直到第一个非空行,然后只匹配除空行以外的所有内容,ruby,regex,Ruby,Regex,使用Ruby,所以我认为这是Perl正则表达式。例如: E-mail Address: user123@gmail.com Billing Address: Harry Smith 3423 My Lane SOME CITY, CA 94105 United States 及 有什么想法吗 以下是我现在所拥有的(ka提供): 现在唯一的问题是它没有停止匹配user123@gmail.com在那条线中断时 /^.*:\n\n([\w\W]*?)\n(?=\n)/ 基本上,这匹配行的开头,

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

E-mail Address: user123@gmail.com Billing Address: Harry Smith 3423 My Lane SOME CITY, CA 94105 United States 及

有什么想法吗

以下是我现在所拥有的(ka提供):

现在唯一的问题是它没有停止匹配user123@gmail.com在那条线中断时

/^.*:\n\n([\w\W]*?)\n(?=\n)/


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

带有基本正则表达式的地址模式:
:\s+([a-zA-Z\d'-,\s]*?)\s\s+

此处解释演示:


带LookArounds的地址模式:
(?@Tass用我的尝试更新了你还需要“账单地址:”bit?@ka-Yup。我将用我目前拥有的来更新。我认为你不需要使用组就无法做到。请参阅下面我的答案。这可能更适合于代码审查:但如果有人在地址中放置两个空格,这是行不通的(例如,加拿大地址并不少见)对不起,我不应该使用地址。它不一定是地址,可以是anything@nneonneo:(关于v1)不知道,认为在这种情况下
\s
会更好,因为它包含的不仅仅是
\n
。更新为不与地址绑定的常规模式(v3)@user1045696我想这就是你想要的(v4)?@kaᵠ 差不多了。我的问题实际上更具体一点。基本上,如果在同一行上有文本:在:,它应该在检测到新行时结束选择。我现在更新问题
Billing Address:

Harry Smith
3423 My Lane
SOME CITY, CA 94105
United States
/(.+?):(?:\s+)?([\s\S]+?)\r?\n(?=\r?\n)/g
/^.*:\n\n([\w\W]*?)\n(?=\n)/