CODE:Python的正則表達式的子空間
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
問題:
我不明白爲什麼:
重新不能替代反斜槓,\ S,\ S,\\ s的所有取代的\ S
重新不能替代\\噸\\ř\\ñ\\ 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)
使用原始字符串的第二部分的正則表達式('r'str''代替''str''),所以反斜槓不會有特殊的含義(python-wise) – ThiefMaster 2011-03-12 09:15:45
感謝您的答案。儘管如此,這對我來說還是不夠的。 line1被替換爲';'通常情況下,line2有奇怪的字符。是什麼原因? line1 = \ [^^äÄöÖåÅA-Za-z0-9 \(\)!{$}。+?|'\「£$ \%&_ +〜#\'@><] + line2 ='\\ t \ \ n \\ f \\ r \\ v' – gintare 2011-03-12 16:01:44
請修改原始文章以添加此附加信息,而不是使用評論。 – 2011-03-12 21:15:39