我正在尋找一種方法來匹配ABC以下字串中的可選項。兩個字串都應該以任何一種方式匹配,如果ABC存在或不存在:
前面的字串未定義長度ABC后面的字串長度未定義 前面的字串長度未定義 后續字串的長度未定義
我試過了
.*(ABC).*
這不適用于可選ABC但使ABC非貪婪也不起作用,因為它.*會引以為豪:
.*(ABC)?.*
這與例如Regex 匹配兩個字串之間的所有字符不是重復的,因為我正在尋找兩個隨機字串之間的某個字串,反之亦然。
uj5u.com熱心網友回復:
您可以使用
.*(ABC).*|.*
這像這樣作業:
.*(ABC).*首先搜索模式,因為它是交替的最左邊部分(請參閱“記住正則運算式引擎是急切的”),它會盡可能多地查找除換行符之外的任何零個或多個字符,然后捕獲ABC到 Group 1 然后用右手匹配該行的其余部分.*|- 或者.*- 如果第一個替換部分不匹配,則搜索。
無需使用交替的另一種解決方案:
^(?:.*(ABC))?.*
請參閱此正則運算式演示。詳情:
^- 字串的開始(?:.*(ABC))?- 一個可選的非捕獲組,它盡可能多地匹配除換行符之外的零個或多個字符,然后捕獲到組 1 中ABC字符序列捕獲到第 1 組中.*- 盡可能多的除換行符以外的零個或多個字符。
uj5u.com熱心網友回復:
我自己想出了一個答案:使用 OR 運算子似乎有效:
(?:(?:.*(ABC))|.*).*
如果有更好的方法,請隨時回答,我會接受。
uj5u.com熱心網友回復:
. ([ABC])?. 應該做的作業
uj5u.com熱心網友回復:
你可以使用這個正則運算式:.*(ABC){0,1}.*。它表示任何,可選{min,max},任何。它更容易閱讀。由于處理速度,我不能說您的解決方案或我的解決方案是否更快。選項:
{value}= n 次
{min,}= 最小值到無窮大
{min,max}= 最小值到最大值
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/508357.html
