我正在使用Python的重新包(是的,我知道正則表達式更一般,但是誰知道,可能有其他包)來讀取一些數據,其中包含帶有變量名的不等式+, - ,>,<或=。 (這是一個不等式體系。)我需要過濾掉變量名稱。使用下劃線的正則表達式匹配
到現在爲止,我用
var_pattern = re.compile(r'[a-z|A-Z]+\d*\.?')
這是有點「哈克」,因爲它是不是太籠統。我不介意,但遇到了一個奇怪的名字如下所示的問題。
我的下一個走得
var_pattern = re.compile(r'[a-z|A-Z]+[a-zA-Z0-9_.]*')
它應該,至少一個首字母后,比賽只是除了+,所發生的一切 - ,>,<和=。這適用於'x23'或'C2000001'等變量名稱。但不是'x_w_3_dummy_1'。我原以爲它可能仍然是因爲下劃線,但它似乎工作得很好,變量'x_b_1_0_0'。
有沒有人知道可能會導致什麼,更重要的是,如何解決它?
順便說一句,我也試過
var_pattern = re.compile(r'[a-z|A-Z]+[^+^-^>^<^=]*')
但無濟於事無論是。
你的變量名也可以用'|'開頭;那是對的嗎?你也不想在變量名中加入'.',是嗎? – 2013-03-26 12:34:01
變量名中是否允許有'.'? – 2013-03-26 12:41:38
Re:'[^ +^- ^>^<^ =]'你只需要開始時使用'^'來表示一個否定的字符集 - 我想你的意思是'[^ + - ><=]' – 2013-03-26 12:49:18