第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python,正則表達式排除數(shù)字匹配

Python,正則表達式排除數(shù)字匹配

九州編程 2021-06-02 18:57:02
要使用正則表達式在字符串中提取任何長度大于 2 的數(shù)字,但還要排除“2016”,這是我所擁有的:import restring = "Employee ID DF856, Year 2016, Department Finance, Team 2, Location 112 "print re.findall(r'\d{3,}', string)輸出:['856', '2016', '112']我試圖將其更改為以下以排除“2016”,但都失敗了。print re.findall(r'\d{3,}/^(!2016)/', string)print re.findall(r"\d{3,}/?!2016/", string)print re.findall(r"\d{3,}!'2016'", string)正確的做法是什么?謝謝你。
查看完整描述

3 回答

?
慕桂英3389331

TA貢獻2036條經(jīng)驗 獲得超8個贊

您可以使用


import re

s = "Employee ID DF856, Year 2016, Department Finance, Team 2, Location 112 20161 12016 120162"

print(re.findall(r'(?<!\d)(?!2016(?!\d))\d{3,}', s))

請參閱Python 演示正則表達式演示。

細節(jié)

  • (?<!\d) - 當前位置左側不允許有任何數(shù)字

  • (?!2016(?!\d))-2016在當前位置的右側不允許緊跟另一個數(shù)字

  • \d{3,} - 3 位或更多位數(shù)字。

帶有一些代碼的替代解決方案:

import re

s = "Employee ID DF856, Year 2016, Department Finance, Team 2, Location 112 20161 12016 120162"

print([x for x in re.findall(r'\d{3,}', s) if x != "2016"])

在這里,我們提取任何 3 個或更多數(shù)字 ( re.findall(r'\d{3,}', s)) 的塊,然后過濾掉那些等于2016。


查看完整回答
反對 回復 2021-06-06
?
泛舟湖上清波郎朗

TA貢獻1818條經(jīng)驗 獲得超3個贊

您想使用負前瞻。正確的語法是:

\D(?!2016)(\d{3,})\b

結果是:

In [24]: re.findall(r'\D(?!2016)(\d{3,})\b', string)
Out[24]: ['856', '112']

或者使用負面回顧:

In [26]: re.findall(r'\D(\d{3,})(?<!2016)\b', string)
Out[26]: ['856', '112']


查看完整回答
反對 回復 2021-06-06
  • 3 回答
  • 0 關注
  • 332 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號