簡體   English   中英

忽略整個字符串模式的大小寫

[英]Ignoring case for a whole pattern of strings

regexp不是我的強項,但我有一個4個字符串列表,我想檢查。 我創建了一個可讀(對我而言)的模式,因此可以輕松添加更多但我99%確定沒有。

列表是,我想匹配字符串,無論使用什么情況。

  • packstation - (packstation | Packstation | PACKSTATION)
  • 包站 - (包站|包站|包站|包站|包站)
  • paketstation - (paketstation | Paketstation | PAKETSTATION)
  • paket站 - (paket站| Paket站| paket站| Paket站| PAKET站)

我正在使用的模式是

^(?!packstation|pack station|paketstation|paket station$).*$

我的問題是我無法忽視案件。 我嘗試在多個地方添加i標志,但它只是打破了模式識別,沒有任何東西通過。

不確定我是否需要創建一個更復雜的模式,或者它是否與Demandware的regexp有問題,它只接受一個模式。

你沒有說明語言。 如果您使用的是Java,Python,Ruby,Perl,.NET或PCRE(PHP),則可以使用內部修飾符(?i)到您的模式中。 在你的情況下:

(?i)^(?!packstation|pack station|paketstation|paket station$).*$

那么你也可以縮短它:

(?i)^(?!pack ?station|paket ?station$).*$

對於這種情況,正則表達式將在上面列出的所有語言中具有相同的效果。

請注意,正則表達式將拒絕:

packstation
PackStation
PACKSTATION
pAcKstAtioN

大寫/小寫字母的所有組合都將被拒絕。

在Python中,內部修飾符是全局的,您只能為整個模式打開它(無論您聲明它的位置如何)。

在Java,Ruby,Perl,.NET或PCRE中,您可以通過在非捕獲組(?modifiers:pattern)使用內部修飾符來限定內部修飾符的范圍。 您也可以從指定的位置打開它(?modifiers) ,並從指定的位置將其關閉(?-modifiers)因為在這些語言中,改性劑的影響是局部的,以在聲明的位置。

通常,大多數語言都會為您提供指定主模式外標志的選項。 它可以支持它作為關閉分隔符到主模式之后的尾隨字符,或者它可以在函數調用中支持它。

暫無
暫無

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

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