簡體   English   中英

正則表達式過濾掉字符串

[英]regex to filter out string

我正在使用以下正則表達式過濾掉字符串

^(?!.*(P1 | P2)).*groupName.*$

這里的組名是我在運行時替換的特定字符串。 這個正則表達式已經運行良好。

我有兩個需要從這個正則表達式傳遞的輸入字符串。 無法更改正則表達式的^(?..*(P1 | P2))部分,因此只想在此部分之后更改正則表達式。 它是一個非常通用的正則表達式,在很多地方都在使用,所以我唯一需要更改的地方是正則表達式的groupName部分。 有沒有辦法只有2字符串可以通過這個正則表達式?

1) ADMIN-P3-UI-READ-ONLY
2) ADMIN-P3-READ-ONLY

在正則表達式中, groupName只是一個變量,它將在運行時替換為所需的字符串。 在這種情況下,我希望傳遞2字符串,因此可以將groupName部分替換為READ-ONLY但它也會傳遞1字符串。

任何人都可以建議如何進行這項工作嗎?

您可以使用負向后視:

(?<!UI-)READ-ONLY

所以在 READ-ONLY 之前必須沒有 UI-

您可以在模式的最開始添加另一個前瞻性以進一步限制它匹配的內容,因為您的模式屬於“匹配一切但”類型。

所以,它可能看起來像

String extraCondition = "^(?!.*UI)";
String regex = "^(?!.*(P1|P2)).*READ-ONLY.*$";
String finalRegex = extraCondition + regex;

圖案看起來像

^(?!.*UI)^(?!.*(P1|P2)).*READ-ONLY.*$

匹配

  • ^(?..*UI) - 除了換行符之外的任何零個或多個字符之后沒有UI從字符串的開頭盡可能多
  • ^(?..*(P1|P2)) - 除了換行符之外的任何零個或多個字符之后,從字符串的開頭起盡可能多的沒有P1P2
  • .*READ-ONLY - 除換行符之外的任何零個或多個字符盡可能多,然后READ-ONLY
  • .*$ - 字符串的 rest。 請注意,除非您想確保輸入字符串中沒有多余的行,否則您可以在此處安全地刪除$

暫無
暫無

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

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