簡體   English   中英

Python 正則表達式檢查字符串

[英]Python RegEx check string

我試圖在 output 上設置正確的版本。 我有這個可能的字符串:

  • 0.0.4.1 #1。
  • 7.51.4.1 #2。
  • 0.1.4.1 #3。

我需要檢查,如果“0”。 正在開始(設置 output 不帶 0. 或 0.0.)

Output 1. 將只有"4.1" , 2. 保持不變3. 將是1.4.1

我試圖設置正確的表達式,如^([0\.]{1})([.\d]{3})+$但即使我使用 {1} 量詞(只有一個“0”)它也沒有正常工作。

有人有線索嗎?

如果應該有 3 個點的 4 位數字部分,您可以首先使用正向超前斷言格式。

在替換中使用空字符串。

^(?=\d+(?:\.\d+){3}$)0+\.(?:0+\.)*
  • ^字符串開頭
  • (?=\d+(?:\.\d+){3}$)正向前瞻,用 3 個點斷言 4 位數字部分
  • 0+\. 匹配 1+ 個零和.
  • (?:0+\.)*可選擇重復匹配 1+ 個零和.

正則表達式演示| Python 演示

例子

import re
strings = ["0.0.4.1", "7.51.4.1", "0.1.4.1", "001", "0.1", ".0.1", "0.0.0.0", "0.1.2.3.4.5"]
pattern = r"^(?=\d+(?:\.\d+){3}$)0+\.(?:0+\.)*"
for s in strings:
    print(re.sub(pattern, "", s))

Output

4.1
7.51.4.1
1.4.1
001
0.1
.0.1
0
0.1.2.3.4.5

其他選項可能是匹配零和一個. 在開始時,然后重復零和一個點。

^0+\.(?:0+\.)*

正則表達式演示

或者更廣泛的模式來匹配所有前導點和零:

^0+\.[.0]*

正則表達式演示

您可以使用

import re
texts = ['0.0.4.1','7.51.4.1','0.1.4.1']
for text in texts:
    m = re.fullmatch(r'(?:0+\.)*(\d+(?:\.\d+)*)', text)
    if m:
        print(m.group(1))
# => 4.1
#    7.51.4.1
#    1.4.1

請參閱Python 演示 注意re.fullmatch需要完整的字符串匹配,因此無需指定^$錨點。

注意 2 :如果您不想匹配0.0.0.0中的任何內容,請添加if m.group(1).replace('0',''):在返回值之前檢查,請參閱此 Python 演示

查看正則表達式演示的含義

  • (?:0+\.)* - 一個或多個0和一個點的零次或多次出現
  • (\d+(?:\.\d+)*) - 第 1 組:一位或多位數字,然后是一個點和一位或多位數字的零次或多次重復。

使用這個簡單的正則表達式: ^[0\.]+

https://regex101.com/r/zUKutI/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM