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