re.findall - 如何获得主要的匹配表达式?

时间:2015-08-12 04:50:49

标签: python regex python-3.x

表达式如下:

re.findall("a(.*?)b",'..a12b..a23b..a45b..')

仅为我提供了分组匹配:['12', '23', '45']

我如何获得基本匹配,即['a12b', 'a23b', 'a45b']

当然我可以手动输入它们,但是有更简单的方法,比如其他语言中的matches[0]吗?

2 个答案:

答案 0 :(得分:2)

只需删除括号即可。这就是返回的内容。

private class DownloadFileTask extends AsyncTask<String, Void, String> {
        ProgressDialog pd;
        @Override
        protected String doInBackground(String... params) {
            // Your File Download Code here
        }

        @Override
        protected void onPostExecute(String result) {
           pd.dismiss();
        }

        @Override
        protected void onPreExecute() {
             pd = new ProgressDialog(yourActivity.this);
             pd.setMessage("Please Wait...");
             pd.show();
       }

        @Override
        protected void onProgressUpdate(Void... values) {}
    }
}

添加另一对
>>> re.findall("a.*?b",'..a12b..a23b..a45b..')
['a12b', 'a23b', 'a45b'] 

注意(解释器中的_获取最后输出的值)

答案 1 :(得分:0)

document

  

如果模式中存在一个或多个组,则返回组列表

所以只需删除()即可返回整个模式。

re.findall("a.*?b",'..a12b..a23b..a45b..')

如果必须使用组,请使用非捕获组:

re.findall("a(?:.*?)b",'..a12b..a23b..a45b..')