我一直在寻找一段时间,并且找不到我想要的东西,或者我只是不知道我在寻找什么......
我有一种情况,我希望捕获和表达式括在括号中,括号是1到5个字符长的字母字符。这并不困难。接下来我想从搜索中排除确切的字符串(AP)。
我正在使用regex101,我似乎在我想要获得的字符串(或者它之前的空格)上获得匹配但是匹配仅返回''''而不是我想要的完整(EXC)。这是我目前的正则表达式:
import turtle
previousMovement = ""
wn = turtle.Screen()
wn.bgcolor("black")
player = turtle.Turtle()
player.color("white")
player.shape("triangle")
player.pencolor("red")
speed = 1
def left():
global previousMovement
if previousMovement == "left":
player.forward(speed)
previousMovement = "left"
else:
player.head(90)
player.forward(speed)
previousMovement = "left"
def right():
global previousMovement
if previousMovement == "right":
player.forward(speed)
previousMovement = "right"
else:
player.head(270)
player.forward(speed)
previousMovement = "right"
turtle.listen()
turtle.onkey(left, "a")
turtle.onkey(right, "d")
正确方向的任何建议或指示;如有必要,我会提供更多信息。
答案 0 :(得分:1)
以下是您首次使用的正则表达式和正常运行的正则表达式(添加空格)的比较:
/((?= \(\D{1,5}\) )) (?: .(?!AP ))/gism
/(( \D{1,5} )) (?<! ( AP ))/gism
当第一个模式位于不以ap
开头的非数字形式时,它将与左括号匹配。看看周围的人物不匹配,请记住。 (点是唯一没有环顾四周的角色。)
另一种模式删除了文字括号:\(
和\)
。它还删除了前瞻?=
,以便您实际捕获某些内容。正则表达式的最后一部分是背后的负面看法。在这种情况下,它所做的只是阻止模式匹配p
当它匹配的事物在ap
结束时。
然而,我无法解释为什么第二种模式有这么多不必要的括号。这相当于:
/(\D{1,5})(?<!AP)/gism