「有什麼區別?在黃瓜步驟定義中使用以下兩個語句有什麼區別?當我在Rubular中測試它們時,它們都適用於所有情況我可以想象,在第二種情況下,我的語法突出顯示更有可能看起來不錯(不需要額外的雙引號就可以搞砸了)「[^」] *「和」。+「和」
即使在堆棧溢出語法突出顯示中,它也會在第一個什麼是比較常見的第一個例子中的優勢
Given /^My name is "([^"]*)"$/ do |myname|
Given /^My name is "(.+)"$/ do |myname|
「有什麼區別?在黃瓜步驟定義中使用以下兩個語句有什麼區別?當我在Rubular中測試它們時,它們都適用於所有情況我可以想象,在第二種情況下,我的語法突出顯示更有可能看起來不錯(不需要額外的雙引號就可以搞砸了)「[^」] *「和」。+「和」
即使在堆棧溢出語法突出顯示中,它也會在第一個什麼是比較常見的第一個例子中的優勢
Given /^My name is "([^"]*)"$/ do |myname|
Given /^My name is "(.+)"$/ do |myname|
[^ 「] *指N(N> = 0)之外的字符」
。+指N(N> 0)字符,包括「
如果主題是超過1個字符,並且沒有引號(「),這兩個正則表達式是相等的。
但是,考慮這個字符串:My name is "special_name_contain_"_laugh"
再次運行你的模式,他們是不一樣的:)
因此,如果我有相同的開始相似的步驟,執行明智,[^」] *更可靠。讓我希望cuke解析器能夠在正則表達式中解釋這一點。 –
以下提供時,第一不會破?
My name is "Henry James" and some other condition is "something else"
第一個正則表達式將帶引號的字符串內的字符限制爲非引號字符 - 因此它只會提取Henry James
。第二個正則表達式一個引號字符之後別的(包括其他引號字符),然後結束引號字符匹配 - 在第二種情況下這樣myname
是:
Henry James" and some other condition is "something else
,這意味着你只能有在你的測試用例中引用一個值 - 這比第一個正則表達式的限制更有限制(只能包含不包含引號字符的引用值)。
我不是紅寶石的大師,但是第一個正則表達式表示:
^
線開始My name is "
文字字符串後面是"
(
開始捕獲組[
開始一個字符類^"
在一個字符類中, ^
的意思是「不是」,所以在這種情況下,它意味着什麼,但字符類的"
]
端*
任意數量的前述,包括0匹配"
引號字符$
行尾第二個,一切都和上面一樣,除了字符類[]
您有:
.
「任何字符」+
一個以上的前+
和*
之間的區別是,+
要求前述的ATLEAST之一,但如果前面有零,則*
也將匹配。
[^"]
意味着除了"
.
指任何字符的任何字符。
*
裝置匹配的時間包括0
+
意味着匹配至少1次。
一個更好的問題可能是什麼之間'的區別「[^」] *「'和'」 + ?「':) –