Python论坛  - 讨论区

标题:[python-chinese] Python中的正则表达式如何区分metacharactor的括号和普通的括号

2006年09月14日 星期四 09:22

邓作霖 pse-dengzl在pegasus.tj.cn
星期四 九月 14 09:22:37 HKT 2006

大家好;

      仍然有个问题是非常困惑的,在Python中如何区分作为Metacharactor的括 
号和普通的括号呢?我在正则表达式工具中使用\(,\)来作为普通的括号字符,但 
是在Python中就不可以了,请问有什么方法能够区分,谢谢。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 09:31

limodou limodou在gmail.com
星期四 九月 14 09:31:13 HKT 2006

On 9/14/06, 邓作霖 <pse-dengzl在pegasus.tj.cn> wrote:
> 大家好;
>
>       仍然有个问题是非常困惑的,在Python中如何区分作为Metacharactor的括
> 号和普通的括号呢?我在正则表达式工具中使用\(,\)来作为普通的括号字符,但
> 是在Python中就不可以了,请问有什么方法能够区分,谢谢。

和你的方法一样。

-- 
I like python!
My Blog: http://www.donews.net/limodou
UliPad Site: http://wiki.woodpecker.org.cn/moin/UliPad
UliPad Maillist: http://groups.google.com/group/ulipad

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 09:39

邓作霖 pse-dengzl在pegasus.tj.cn
星期四 九月 14 09:39:38 HKT 2006

但是不行呢,同样的表达式,在RegexBuilder中可以在Python里就不行,比如这个
showHELP\('',true,'(\D+)\((.+)\)',true\)  , 来匹配 
showHELP('',true,'TEST(F11709)',true) ,我有什么地方写错了吗?


limodou wrote:
> On 9/14/06, 邓作霖 <pse-dengzl at pegasus.tj.cn> wrote:
>   
>> 大家好;
>>
>>       仍然有个问题是非常困惑的,在Python中如何区分作为Metacharactor的括
>> 号和普通的括号呢?我在正则表达式工具中使用\(,\)来作为普通的括号字符,但
>> 是在Python中就不可以了,请问有什么方法能够区分,谢谢。
>>     
>
> 和你的方法一样。
>
>   


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 09:47

chenwei chenwei在sobey.com
星期四 九月 14 09:47:12 HKT 2006

是否应该把'替换为''
----- Original Message ----- 
From: "邓作霖" <pse-dengzl at pegasus.tj.cn>
To: <python-chinese at lists.python.cn>
Sent: Thursday, September 14, 2006 9:39 AM
Subject: Re: [python-chinese] Python中的正则表达式如何区分metacharactor的括号和普通的括号


> 但是不行呢,同样的表达式,在RegexBuilder中可以在Python里就不行,比如这个
> showHELP\('',true,'(\D+)\((.+)\)',true\)  , 来匹配 
> showHELP('',true,'TEST(F11709)',true) ,我有什么地方写错了吗?
> 
> 
> limodou wrote:
>> On 9/14/06, 邓作霖 <pse-dengzl at pegasus.tj.cn> wrote:
>>   
>>> 大家好;
>>>
>>>       仍然有个问题是非常困惑的,在Python中如何区分作为Metacharactor的括
>>> 号和普通的括号呢?我在正则表达式工具中使用\(,\)来作为普通的括号字符,但
>>> 是在Python中就不可以了,请问有什么方法能够区分,谢谢。
>>>     
>>
>> 和你的方法一样。
>>
>>   
> 
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 09:53

limodou limodou在gmail.com
星期四 九月 14 09:53:19 HKT 2006

On 9/14/06, 邓作霖 <pse-dengzl在pegasus.tj.cn> wrote:
> 但是不行呢,同样的表达式,在RegexBuilder中可以在Python里就不行,比如这个
> showHELP\('',true,'(\D+)\((.+)\)',true\)  , 来匹配
> showHELP('',true,'TEST(F11709)',true) ,我有什么地方写错了吗?
>
没看懂,你是说上面是正则式,要匹配下面的东西吗?如果是这样,你的正则式不对怎么能匹配得上呢?,不知道你在RegexBuilder中是怎么试的?

\D表示非数字的字符,这样一来,你的\D+与'TEST(F'匹配上了,括号已经没有了,你的正则式再有括号当然匹配不上。不知道你所说的RegexBuilder怎么就行,看来它有问题啊。再有,你只想要其中的东西,不用把没用的都写上,正则式如果这么用不是麻烦死了。

-- 
I like python!
My Blog: http://www.donews.net/limodou
UliPad Site: http://wiki.woodpecker.org.cn/moin/UliPad
UliPad Maillist: http://groups.google.com/group/ulipad

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 10:05

shhgs shhgs.efhilt在gmail.com
星期四 九月 14 10:05:22 HKT 2006

POSIX关于regexp有两个标准,BRE(Basic Regular Expression) 和ERE (extended
Regular Expression)。括号在BRE里面不属于meta character,在ERE里面则属于meta character。
Python实现的是Perl 5的regexp,是ERE的扩展。而RegexBuilder,我没用过,但估计应该是BRE的。说不定你可以修改设置,让它支持其他Regexp的方言,比如ERE或者Perl
5的。

此外,如果你要用Py的RE,最好用Py写的工具,比如kodos。

On 9/13/06, limodou <limodou在gmail.com> wrote:
> On 9/14/06, 邓作霖 <pse-dengzl在pegasus.tj.cn> wrote:
> > 但是不行呢,同样的表达式,在RegexBuilder中可以在Python里就不行,比如这个
> > showHELP\('',true,'(\D+)\((.+)\)',true\)  , 来匹配
> > showHELP('',true,'TEST(F11709)',true) ,我有什么地方写错了吗?
> >
> 没看懂,你是说上面是正则式,要匹配下面的东西吗?如果是这样,你的正则式不对怎么能匹配得上呢?,不知道你在RegexBuilder中是怎么试的?
>
> \D表示非数字的字符,这样一来,你的\D+与'TEST(F'匹配上了,括号已经没有了,你的正则式再有括号当然匹配不上。不知道你所说的RegexBuilder怎么就行,看来它有问题啊。再有,你只想要其中的东西,不用把没用的都写上,正则式如果这么用不是麻烦死了。
>
> --
> I like python!
> My Blog: http://www.donews.net/limodou
> UliPad Site: http://wiki.woodpecker.org.cn/moin/UliPad
> UliPad Maillist: http://groups.google.com/group/ulipad
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 10:12

邓作霖 pse-dengzl在pegasus.tj.cn
星期四 九月 14 10:12:05 HKT 2006

用\D+不能仅仅匹配到(之前吗?因为我想要严格限定showHELP这个函数中那两个 
bool类型参数为true所以才这样写的,我刚开始看正则表达式,本来想找个方便点 
的工具能够简单验证我写的结果,现在这两个软件的差异确实是一件令人困惑的事 
情,我再试试吧,非常感谢。

limodou wrote:
> On 9/14/06, 邓作霖 <pse-dengzl at pegasus.tj.cn> wrote:
>   
>> 但是不行呢,同样的表达式,在RegexBuilder中可以在Python里就不行,比如这个
>> showHELP\('',true,'(\D+)\((.+)\)',true\)  , 来匹配
>> showHELP('',true,'TEST(F11709)',true) ,我有什么地方写错了吗?
>>
>>     
> 没看懂,你是说上面是正则式,要匹配下面的东西吗?如果是这样,你的正则式不对怎么能匹配得上呢?,不知道你在RegexBuilder中是怎么试的?
>
> \D表示非数字的字符,这样一来,你的\D+与'TEST(F'匹配上了,括号已经没有了,你的正则式再有括号当然匹配不上。不知道你所说的RegexBuilder怎么就行,看来它有问题啊。再有,你只想要其中的东西,不用把没用的都写上,正则式如果这么用不是麻烦死了。
>
>   

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 10:14

limodou limodou在gmail.com
星期四 九月 14 10:14:30 HKT 2006

On 9/14/06, 邓作霖 <pse-dengzl在pegasus.tj.cn> wrote:
> 用\D+不能仅仅匹配到(之前吗?因为我想要严格限定showHELP这个函数中那两个
> bool类型参数为true所以才这样写的,我刚开始看正则表达式,本来想找个方便点
> 的工具能够简单验证我写的结果,现在这两个软件的差异确实是一件令人困惑的事
> 情,我再试试吧,非常感谢。
>
想匹配到括号前可以
[^\(]+

-- 
I like python!
My Blog: http://www.donews.net/limodou
UliPad Site: http://wiki.woodpecker.org.cn/moin/UliPad
UliPad Maillist: http://groups.google.com/group/ulipad

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 10:25

邓作霖 pse-dengzl在pegasus.tj.cn
星期四 九月 14 10:25:21 HKT 2006

非常感谢,这个工具太好用了,我的问题解决了,不是正则表达式的问题,是我犯 
了一个很弱智的错误。 :-[

shhgs wrote:
> POSIX关于regexp有两个标准,BRE(Basic Regular Expression) 和ERE (extended
> Regular Expression)。括号在BRE里面不属于meta character,在ERE里面则属于meta character。
> Python实现的是Perl 5的regexp,是ERE的扩展。而RegexBuilder,我没用过,但估计应该是BRE的。说不定你可以修改设置,让它支持其他Regexp的方言,比如ERE或者Perl
> 5的。
>
> 此外,如果你要用Py的RE,最好用Py写的工具,比如kodos。
>
> On 9/13/06, limodou <limodou at gmail.com> wrote:
>   
>> On 9/14/06, 邓作霖 <pse-dengzl at pegasus.tj.cn> wrote:
>>     
>>> 但是不行呢,同样的表达式,在RegexBuilder中可以在Python里就不行,比如这个
>>> showHELP\('',true,'(\D+)\((.+)\)',true\)  , 来匹配
>>> showHELP('',true,'TEST(F11709)',true) ,我有什么地方写错了吗?
>>>
>>>       
>> 没看懂,你是说上面是正则式,要匹配下面的东西吗?如果是这样,你的正则式不对怎么能匹配得上呢?,不知道你在RegexBuilder中是怎么试的?
>>
>> \D表示非数字的字符,这样一来,你的\D+与'TEST(F'匹配上了,括号已经没有了,你的正则式再有括号当然匹配不上。不知道你所说的RegexBuilder怎么就行,看来它有问题啊。再有,你只想要其中的东西,不用把没用的都写上,正则式如果这么用不是麻烦死了。
>>
>> --
>> I like python!
>> My Blog: http://www.donews.net/limodou
>> UliPad Site: http://wiki.woodpecker.org.cn/moin/UliPad
>> UliPad Maillist: http://groups.google.com/group/ulipad
>> _______________________________________________
>> python-chinese
>> Post: send python-chinese at lists.python.cn
>> Subscribe: send subscribe to python-chinese-request at lists.python.cn
>> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
>> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>>     
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月14日 星期四 10:28

邓作霖 pse-dengzl在pegasus.tj.cn
星期四 九月 14 10:28:32 HKT 2006

我明白了,现在能匹配了,谢谢 :)

limodou wrote:
> On 9/14/06, 邓作霖 <pse-dengzl at pegasus.tj.cn> wrote:
>   
>> 用\D+不能仅仅匹配到(之前吗?因为我想要严格限定showHELP这个函数中那两个
>> bool类型参数为true所以才这样写的,我刚开始看正则表达式,本来想找个方便点
>> 的工具能够简单验证我写的结果,现在这两个软件的差异确实是一件令人困惑的事
>> 情,我再试试吧,非常感谢。
>>
>>     
> 想匹配到括号前可以
> [^\(]+
>
>   


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月15日 星期五 13:50

大熊 bearsprite在gmail.com
星期五 九月 15 13:50:34 HKT 2006

import re

p =re.compile("showHELP\('',true,'(\D+)\((.+)\)',true\)")
s = "showHELP('',true,'TEST(F11709)',true)"
r = p.match(s)
print r.groups()

结果为  ('TEST', 'F11709'),也该是对的吧。不知道你的错误在哪里?

2006/9/14, 邓作霖 <pse-dengzl在pegasus.tj.cn>:
>
> 用\D+不能仅仅匹配到(之前吗?因为我想要严格限定showHELP这个函数中那两个
> bool类型参数为true所以才这样写的,我刚开始看正则表达式,本来想找个方便点
> 的工具能够简单验证我写的结果,现在这两个软件的差异确实是一件令人困惑的事
> 情,我再试试吧,非常感谢。
>
> limodou wrote:
> > On 9/14/06, 邓作霖 <pse-dengzl在pegasus.tj.cn> wrote:
> >
> >> 但是不行呢,同样的表达式,在RegexBuilder中可以在Python里就不行,比如这个
> >> showHELP\('',true,'(\D+)\((.+)\)',true\)  , 来匹配
> >> showHELP('',true,'TEST(F11709)',true) ,我有什么地方写错了吗?
> >>
> >>
> > 没看懂,你是说上面是正则式,要匹配下面的东西吗?如果是这样,你的正则式不对怎么能匹配得上呢?,不知道你在RegexBuilder中是怎么试的?
> >
> >
> \D表示非数字的字符,这样一来,你的\D+与'TEST(F'匹配上了,括号已经没有了,你的正则式再有括号当然匹配不上。不知道你所说的RegexBuilder怎么就行,看来它有问题啊。再有,你只想要其中的东西,不用把没用的都写上,正则式如果这么用不是麻烦死了。
> >
> >
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
茫茫人海,你是我的最爱
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20060915/a4f41527/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号