Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Regex 正则表达式,用于根据特定文本行选择文本组/行束_Regex_Negative Lookahead_Capture Group - Fatal编程技术网

Regex 正则表达式,用于根据特定文本行选择文本组/行束

Regex 正则表达式,用于根据特定文本行选择文本组/行束,regex,negative-lookahead,capture-group,Regex,Negative Lookahead,Capture Group,我有以下格式的文本 Scenario: Lorem ipsum dolor sit amet, consectetur adipiscing elit Given sed do eiusmod tempor When Ut enim ad minim veniam, quis nostrud exercitation Then In voluptate velit esse cillum dolore eu fugiat nulla @Sprint4 @543fsdf Scenario: Lo

我有以下格式的文本

Scenario: Lorem ipsum dolor sit amet, consectetur adipiscing elit
Given sed do eiusmod tempor
When Ut enim ad minim veniam, quis nostrud exercitation
Then In voluptate velit esse cillum dolore eu fugiat nulla

@Sprint4 @543fsdf
Scenario: Lorem ipsum dolor sit amet, consectetur adipiscing elit
Given sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
When Ut enim ad minim veniam, quis nostrud exercitation
Then In voluptate velit esse cillum dolore eu fugiat nulla

@Sprint1 @345277
Scenario: Sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt returned correct singular message
Given sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
And Duis aute irure dolor in reprehenderit  
When Ut enim ad minim veniam, quis nostrud
Then quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur

@Sprint1 @xyz1234
Scenario: At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis
Given sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
And Duis aute irure dolor in reprehenderit  
When Ut enim ad minim veniam, quis nostrud
Then quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur
我想根据其中的一行文本选择整个场景

例如

根据“给定的时间范围内的劳动力和劳动力”

我想要第二个场景

Scenario: Lorem ipsum dolor sit amet, consectetur adipiscing elit
Given sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
When Ut enim ad minim veniam, quis nostrud exercitation
Then In voluptate velit esse cillum dolore eu fugiat nulla
,也是第三和第四种情况,但不是第一种情况

我正在努力

Scenario[\s\S]*?Given sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua[\s\S]*?(?=(@|Scenario))

但这给了我第一个和第二个场景,第三个但没有第四个场景。我也尝试了其他的模式,但没有成功。帮助?

鉴于您的场景总是从新行开始,您可以使用look-behind来搜索该行,您可以使用look-aheat来搜索后跟
@
的空格或字符串结尾来捕获匹配块的结尾。以你为例:

(?<=\s)Scenario.*?[\r\n]+Given sed do eiusmod tempor incididunt ut labore et dolore magna aliqua[\r\n]+.*?(?=\s+@|\s*$)

(?我不知道是否有帮助,但我所做的是将所有行与@匹配,直到行尾。如果是这种情况,您可以将其替换为null

(@\V+)

按场景分割文本(按块)并过滤块。因此,您希望三行以“给定”、“何时”和“然后”开头?或者您不希望第一个场景(没有@)不是真的。我希望所有内容都从场景开始:直到该块结束。