-1
$s1='afa';
$s2='bebeeeb';
$s1=~/((\w)(?!\2))+\2?/;
這個正則表達式匹配兩個字符串。 我只想匹配第一個字符串。 (第一個字符後跟任意字符,但不是第一個字符所拍攝的兩個字符可以重複任意次數。)如何在Perl中匹配這個字符串'afa'而不是'bebeeeb'?
$s1='afa';
$s2='bebeeeb';
$s1=~/((\w)(?!\2))+\2?/;
這個正則表達式匹配兩個字符串。 我只想匹配第一個字符串。 (第一個字符後跟任意字符,但不是第一個字符所拍攝的兩個字符可以重複任意次數。)如何在Perl中匹配這個字符串'afa'而不是'bebeeeb'?
更容易檢查相反的。
# Doesn't contain repeated word characters.
$s !~ /(\w)\1/
否則,您必須在每個位置檢查。 (你是在任何位置檢查)
# Every character is a non-word character or a non-repeated word character
$s =~ /^(?:\W|(\w)(?!\1))*\z/
如果輸入只能包含單詞字符,上述簡化爲
# Every character is a non-repeated word character
$s =~ /^(?:(\w)(?!\1))*\z/
甚至
# Every character is a non-repeated character
$s =~ /^(?:(.)(?!\1))*\z/s
也許'/^(?:(\ W)(\ 1)?!)+ \ $ 1 /'?不知道你最後需要'\ 1?':你把它添加到你的模式中,以允許在字符串的末尾可選地出現第一個字符char,對吧?如果「任何字符」表示一個單詞char,則應將'.'換成'\ w'。 –
這些規則是什麼都很不清楚 - 爲什麼第二個不是你想要的。請更清楚地解釋一下,也許還需要藉助一些更多的例子(正面和負面)來表達想要的東西。 'dcdcdc'可以嗎? 'dccc'可以嗎? 'cdefg'會好嗎? –
不錯的正則表達式! https://xkcd.com/1313/ –