在正则表达式

时间:2016-10-28 05:13:23

标签: python regex python-3.x

Python业余爱好者:

我只是在玩正则表达式,我已经碰到过这个:

import re

while True:
    userInput = input('Type in your string here: ')
    regexInput = input('Enter Regex pattern here:')

    testRegex = re.compile([^regexInput])
    testMO = testRegex.search(userInput)
    print(testMO.group())

基本上,我希望我的正则表达式匹配除了通过regexInput指定的模式之外的所有内容。但是,我从此代码中收到语法错误。我认为在一个字符类的开始括号后面放一个胡萝卜,这意味着Python会搜索除括号中的内容之外的所有内容? 我正在做自动化无聊事物的第7章的最后一个项目。 除了在regexInput中输入的内容之外,我怎样才能使我的代码与除了输入的内容相匹配?

有人告诉我这个:

  

regex需要字符串,所以你必须创建字符串:

"[^" + regexInput +"]" or "[^{}]".format(regexInput)

我并不完全理解这个回复,特别是答案的第二部分。只是为了测试他说的话,我使用了这段代码:

import re

while True:
    userInput = input('Type in your string here: ')
    regexInput = input('Enter Regex pattern here:')

    testRegex = re.compile(regexInput)
    testMO = testRegex.search(userInput).group()
    print(testMO)

这给了我一个输出:

Type in your string here: Here lies Batman.
Enter Regex pattern here:Batman
Batman
Type in your string here: 

难道这并不意味着正则表达式也采用了变量,并使其有效吗?因此,我对其他人所说的内容感到困惑,因为它似乎与他的声明相矛盾,regex期待一个字符串'。

1 个答案:

答案 0 :(得分:0)

[^regexInput]不是语法上有效的Python表达式。看起来您正在尝试创建由字符[^组成的字符串,后跟变量regexInput的值,后跟字符]。在Python中编写此代码的一种方法是:'[^' + regexInput + ']'