正则表达式从字符串的末尾开始搜索(反向)

时间:2014-10-23 13:09:27

标签: regex

我的字符串中有下划线的块。例如:

*Text* _word_ it is something we read every day. _Words in texts_ can be really expressive. _A nice text is a pleasure for your body and soul_ (Oscar Wilde)

在上面的示例中,有三个这样的块,但数字因字符串而异。我想只匹配最后一个,即从行尾开始懒洋洋地跳过字符直到找到第一个_,跳过任何后面的字符,直到遇到第二个_并在那里停止。

如果我们在字符串中查找第一个块,很容易找到类似的块,但是如何找到 last 一个?

2 个答案:

答案 0 :(得分:5)

尝试使用:

((?:_[^_\r\n]*){2})$

它匹配下划线,后跟任何数字的任何不是下划线或换行符的字符,所有这些都在留置权结束之前发生两次。

答案 1 :(得分:2)

第二个_和字符串结尾之间的文字应匹配

使用否定的字符类,例如

([^.]*$)

它将匹配字符串末尾的所有内容,而不是.,从而产生最后一个引号(假设每个引号以.结尾)

http://regex101.com/r/fA3pI7/1