E.g.我想在最後匹配字符串用同一個詞截至開始,所以以下字符串匹配:匹配字符串的正則表達式等於組中的一個
aaa dsfj gjroo gnfsdj riier aaa
sdf foiqjf skdfjqei adf sdf sdjfei sdf
rew123 jefqeoi03945 jq984rjfa;p94 ajefoj384 rew123
E.g.我想在最後匹配字符串用同一個詞截至開始,所以以下字符串匹配:匹配字符串的正則表達式等於組中的一個
aaa dsfj gjroo gnfsdj riier aaa
sdf foiqjf skdfjqei adf sdf sdjfei sdf
rew123 jefqeoi03945 jq984rjfa;p94 ajefoj384 rew123
這一個可以做TE工作:
/^(\w+\b).*\b\1$/
解釋:
/ : regex delimiter
^ : start of string
( : start capture group 1
\w+ : one or more word character
\b : word boundary
) : end of group 1
.* : any number of any char
\b : word boundary
\1 : group 1
$ : end of string
/ : regex delimiter
我不認爲正則表達式在這裏是正確的選擇。爲什麼該行不分成數組,並比較第一個和最後一個項目:
在C#:
string[] words = line.Split(' ');
return words.Length >= 2 && words[0] == words[words.Length - 1];
M42的答案是,除了退化情況確定 - 它不會匹配字符串只有一個字。爲了接受這些一個正則表達式使用內:
/^(?:(\w+\b).*\b\1|\w+)$/
還可選配只在必要的部分可能是顯著快上非常大的字符串。我這裏還有我的解決方案上的javascript:
正則表達式:
function areEdgeWordsTheSame(str) {
var m = str.match(/^(\w+)\b/);
return (new RegExp(m[1]+'$')).test(str);
}
字符串:
function areEdgeWordsTheSame(str) {
var idx = str.indexOf(' ');
if (idx < 0) return true;
return str.substr(0, idx) == str.substr(-idx);
}
謝謝! '\ 1'是我搜索的。 – 2012-01-12 10:04:15