匹配字符串末尾的字符

时间:2014-03-04 11:30:07

标签: regex

xxxTxxx

xxxTxx

xxxTx

我希望最后得到所有 x。

(.*)(x$)只能获得最后一个x。 (.*)(x*$)无效,因为它与结尾不匹配。我需要在魔术背后使用一些看法,对吧?

谢谢你的正则表达式!

4 个答案:

答案 0 :(得分:4)

如果您只想在结尾处使用x,则可以使用:

/(x+)$/

这基本上说要查看字符串的末尾至少一个x并找到尽可能多的。

如果您想在开头使用所有x,可以使用:

/^(x+)/

这会做同样的事情,但会告诉它查看字符串的开头。

答案 1 :(得分:1)

怎么样:

^(.*?)(x+)$

您将拥有第2组中的x以及第1组中的所有内容。

答案 2 :(得分:0)

它总是'T'吗?

在哪种情况下:

 T(x*)$

或者T可能是除了'x'以外的任何东西:

 [^x](x*)$

编辑:

实际上:

(x*)$

......足够了。它会贪婪地消耗'x'。如果在'x'的运行结束时它找到了字符串的结尾,那就是匹配。否则它会丢弃它们并开始尝试再次匹配。

答案 3 :(得分:0)

尝试使用此模式:

使用RegexOptions.RightToLeft,您将确保开始寻找字符串的结尾。

string text = "xxxTxxx";
string pattern = @"x+";
Regex r = new Regex(pattern, RegexOptions.RightToLeft);
string temp = r.Match(text).Value;

输出将是:

“XXX”

如果你想确定它在文本的最后,请使用:

string text = "xxxTxxx&";
string pattern = @"x+$";
Regex r = new Regex(pattern, RegexOptions.RightToLeft);
string temp = r.Match(text).Value;

在这种情况下,输出将是:

“”