"[^"]*"和".+"之间的区别是什么?

Dav*_*lla 2 ruby regex cucumber

在黄瓜步骤定义中使用以下两个语句有什么区别?当我在Rubular中测试它们时,它们都能在我能想象到的所有情况下工作.在第二种情况下,我的语法突出显示更可能看起来很好(没有额外的双引号搞砸了).

即使在Stack Overflow语法高亮显示中,它也会在第一个语言中被搞砸.更常见的第一个例子有什么优点?

Given /^My name is "([^"]*)"$/ do |myname|
Given /^My name is "(.+)"$/ do |myname|
Run Code Online (Sandbox Code Playgroud)

lot*_*php 6

[^"]*表示N(N> = 0)个字符,"

.+表示N(N> 0)个字符,包括"

如果主题超过1个字符,并且没有引号("),则两个正则表达式模式相同.

但是,考虑一下这个字符串:My name is "special_name_contain_"_laugh" 再次运行你的模式,它们不一样:)


Sea*_*ira 5

提供以下内容时,第一个不会中断:

My name is "Henry James" and some other condition is "something else"
Run Code Online (Sandbox Code Playgroud)

第一个正则表达式将引用字符串中的字符限制为非引号字符 - 因此它只会拾取Henry James.第二个正则表达式匹配引号字符后跟其他任何内容(包括其他引号字符),然后匹配结束引号字符 - 所以myname在第二种情况下将是:

Henry James" and some other condition is "something else
Run Code Online (Sandbox Code Playgroud)

这意味着在测试用例中只能有一个引用值 - 这比第一个正则表达式的限制更具限制性(您只能使用不包含引号字符的引用值).