簡體   English   中英

在 Python 中的兩組模式之間提取字符串

[英]Extract a string between two set of patterns in Python

我正在嘗試使用re.search()在兩組模式之間提取 substring 。

左邊可以是0x0X ,右邊可以是U ,或\n 結果不應包含邊界模式。 例如, 0x1234U應該導致1234

我嘗試使用以下搜索模式: (0x|0X)(.*)(U| |\n) ,但它在結果中包含左右模式。

什么是正確的搜索模式?

您可以將lookbehind 和lookahead 的組合與非貪婪匹配模式結合使用:

import re
   
pattern = r"(?<=0[xX])(.*?)(?=[U\s\n])"

re.findall(pattern,"---0x1234U...0X456a ")

['1234', '456a']

您也可以使用.group(1)使用單個組

0[xX](.*?)[U\s]

模式匹配:

  • 0[xX]匹配0x0X
  • (.*?)第 1 組中捕獲匹配除換行符以外的任何字符,盡可能少
  • [U\s]匹配U或空白字符(也可以匹配換行符)

正則表達式演示| Python 演示

import re

s = r"0x1234U"
pattern = r"0[xX](.*?)[U\s]"

m = re.search(pattern, s)
if m:
    print(m.group(1))

Output

1234

暫無
暫無

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

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