gpt4 book ai didi

Python 正则表达式子空间

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:21 25 4
gpt4 key购买 nike

代码:

word = 'aiuhsdjfööäö ; sdfdfd'
word1=re.sub('[^^äÄöÖåÅA-Za-z0-9\t\r\n\f()!{$}.+?|]',"""\[^^0-9\t\r\n\f(!){$}.+?|\]*""", word) ; print 'word= ', word
word2=re.sub('[^^äÄöÖåÅA-Za-z0-9\t\r\n\f()!{$}.+?|]',"""\[^^0-9\\t\\r\\n\\f(!){$}.+?|\]*""", word) ; print 'word= ', word
word3=re.sub('[^^äÄöÖåÅA-Za-z0-9\t\r\n\f()!{$}.+?|]',"""\[^^0-9\\\t\\\r\\\n\\\f(!){$}.+?|\]*""", word) ; print 'word= ', word
word4=re.sub('[^^äÄöÖåÅA-Za-z0-9\s()!{$}.+?|]',"""\[^^0-9\s(!){$}.+?|\]*""", word) ; print 'word= ', word
word5=re.sub('[^^äÄöÖåÅA-Za-z0-9\s()!{$}.+?|]',"""\[^^0-9\\s(!){$}.+?|\]*""", word) ; print 'word= ', word
word6=re.sub('[^^äÄöÖåÅA-Za-z0-9\s()!{$}.+?|]',"""\[^^0-9\\\s(!){$}.+?|\]*""", word) ; print 'word= ', word

F=open('suoriP.txt','w')
F.writelines(word1+'\n\n'+word2+'\n\n'+word3+'\n\n'+word4+'\n\n'+word5+'\n\n'+word6)
F.close

结果:

aiuhsdjfööäö\[^^0-9 

(!){$}.+?|\]*\[^^0-9

(!){$}.+?|\]*\[^^0-9

(!){$}.+?|\]*sdfdfd

aiuhsdjfööäö\[^^0-9

(!){$}.+?|\]*\[^^0-9

(!){$}.+?|\]*\[^^0-9

(!){$}.+?|\]*sdfdfd

aiuhsdjfööäö\[^^0-9\ \
\
\(!){$}.+?|\]*\[^^0-9\ \
\
\(!){$}.+?|\]*\[^^0-9\ \
\
\(!){$}.+?|\]*sdfdfd

aiuhsdjfööäö \[^^0-9\s(!){$}.+?|\]* sdfdfd

aiuhsdjfööäö \[^^0-9\s(!){$}.+?|\]* sdfdfd

aiuhsdjfööäö \[^^0-9\s(!){$}.+?|\]* sdfdfd

问题:

我不明白为什么:

  1. re不替换反斜杠,\s、\s、\\s都替换为\s

  2. re 不会用\\t\\r\\n\\f 代替 ';'

我正在尝试通过分析文件生成具有变量名的复杂重新模式。

我无法生成空格字符表示 [^^äÄöÖåÅA-Za-z0-9\t\r\n\f()!{$}.+?|]。我的意思是如果我在文本文件中找到';'使用 word1=re.sub('[^^äÄöÖåÅA-Za-z0-9\t\r\n\f()!{$}.+?|]',....

我无法替换这个字符 ';'按字符串 '[^^äÄöÖåÅA-Za-z0-9\t\r\n\f()!{$}.+?|]'

这个字符串是一个模式字符串,我在 re.search 中使用它来提取某些单词作为变量。

解决方案<后来出现并且后来添加的。

最后我用xxxx代替了空格特殊字符。后来通过添加 '\t\n\f\v\r' 合并、拆分和合并字符串。

strsub=smart_str('[^^äÄöÖåÅA-Za-z0-9xxxx()!{$}.+?|`\"£$\%&_+~#\'@><]+', encoding='utf-8', strings_only=False, errors='replace' )
word=re.sub('[^^äÄöÖåÅA-Za-z0-9\t\n\r\f()!{$}.+?|£$\%&_+~#\'@><]+',strsub,word)

for line in word.split('xxxx'):
str2=str2+'\\t\\n\\f\\v\\r'+line
F.writelines(str2)

最佳答案

当您使用 re.sub 时,第二部分将不是正则表达式——您只需将它分组并在 \1\2 中调用它 例如:

 word="aiuhsdjfööäö"
word1=re.sub("(.+?)[äa](.+?)","\1a\2 [corrected]",word)

我上面所做的完全没有必要,但我这样做是为了表明我的观点,即当您将 [ 用作第二个时,它不必在 \ 之后re.sub

的一部分

关于Python 正则表达式子空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com