如何从右边创建非贪婪的正则表达式?

时间:2018-04-02 18:49:14

标签: python regex

我有一个名为' ab9c_xy8z_12a3.pdf'的文件。 。我希望在最后一个下划线之后和之前的#pd; #pd;之前捕捉到部分内容。 编写正则表达式,如:

    s = 'ab9c_xy8z_12a3.pdf'
    m = re.search(r'_.*?\.pdf',s)
    m.group(0)

返回: ' _xy8z_12a3.pdf'

在这个例子中,我只想捕获' 12a3'部分。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

_.*?\.pdf regex第一个下划线与_匹配,然后尽可能少地匹配除换行符之外的任何0 +字符,但最左边出现的是.pdf,原来是在字符串的末尾。因此,.匹配所有下划线到.pdf,只是因为正则表达式引擎解析字符串的方式(从左到右)和.模式。

您可以使用negated character class [^_]代替.来修复此模式,该.将从([^_]+)\.pdf 模式中“减去”下划线。

import re
rx = r"([^_]+)\.pdf"
s = "ab9c_xy8z_12a3.pdf"
m = re.search(rx, s)
if m:
    print(m.group(1)) # => 12a3

并抓取第1组值。请参阅regex demo

Python demo

ramp = self._slow_trap_ramp(j)

答案 1 :(得分:1)

改为使用public void addone(View v){ numtest+=1; View parent = parentLinearLayout.getChildAt(v.getTag()); TextView t = (TextView) parent.findViewById(R.id.counter); t.setText(numtest+""); } /// similarly for other method substract

re.split