我必须匹配短语(单词组)(介于两者之间的任何内容)(单词组)中的某些特定条件,例如:
RUN go get -u github.com/pressly/goose/cmd/goose
RUN goose postgres "host=db user=user dbname=dbname sslmode=disable password=123" up
所以任何时候我都想匹配“ mirror bananas banannas人口”。这是最好的解决方案吗?容易发生灾难性的回溯吗?
答案 0 :(得分:1)
window = Tk()
# set up password
#button which may accept the password/username
button = Button(window, text='OK')
button.config(width=5, height=2, command=somefunctionacceptingordeclining)
def somefunctionacceptingordeclining():
if something == something:
window.quit() #this closes the current window and resumes execution
#where i put RESUME
window.mainloop()
# RESUME:
#by importing the script below here you execute it when the window is closed.
import someotherscript
部分可能会导致灾难性的回溯,因为经过(\s*\w+\s*\W*\s*)*?
量化的组中唯一的强制性模式是*?
,并且它被其他可选模式所包围(\w+
和\s*
可能匹配空字符串,请注意,像\W*
这样的相邻*
量化模式匹配相同的字符,这是导致灾难性回溯的不良做法。
如果您test your regex against mirror banana banannas populatio
,您将得到灾难性的回溯错误。
在您的情况下,最好的正则表达式方式是,当您从JSON文件中读取前导/后缀单词列表时,使用的是正则表达式,例如
\s*\W*\s*
您需要的值将在第1组中,或者如果您使用(?:leading_word1|leading_word2|...|leading_wordN)(.*?)(?:trailing_word1|trailing_word2|...|trailing_wordN)
(例如您说的是使用Python),则该值将在列表中。