例如,我有這些字串
APPLEJUCE1A
APPLETREE2B
APPLECAKE3C
APPLETEA1B
APPLEWINE3B
APPLEWINE1C
我想要所有這些字串,除了那些有TEA或WINE1C在其中的字串。
APPLEJUCE1A
APPLETREE2B
APPLECAKE3C
APPLEWINE3B
我已經嘗試了以下方法,但沒有奏效:
^APPLE(?!.*(?:TEA|WINE1C)).*$
感謝任何幫助,因為我對此也有點陌生。
uj5u.com熱心網友回復:
如果您確實如您所聲稱的那樣擁有多個字串,則無需將所有這些都塞入一個正則運算式模式中。
/^APPLE/ && !/TEA|WINE1C/
如果你有一個字串,最好的方法可能是將它拼接成行(split /\n/),但你也可以使用單個正則運算式匹配
/^APPLE(?!.*TEA|WINE1C).*/g
uj5u.com熱心網友回復:
您可以使用
^APPLE(?!.*TEA)(?!.*WINE1C).*
請參閱正則運算式演示。
詳情:
^- 字串的開始APPLE- 固定字串(?!.*TEA)-TEA不允許在當前位置右側的任何地方(?!.*WINE1C)-WINE1C不允許在當前位置右側的任何地方.*- 盡可能多的除換行符以外的任何零個或多個字符。
uj5u.com熱心網友回復:
如果您不想匹配同時具有兩者或它們的字串(不在當前示例資料中):
^APPLE(?!.*(WINE1C|TEA).*(?!\1)(?:TEA|WINE1C)).*
解釋
^字串的開始APPLE從字面上匹配(?!負前瞻.*(WINE1C|TEA)捕獲組 1 中的任一值.*匹配 0 個字符(?!\1)(?:TEA|WINE1C)匹配任一值,只要它與第 1 組中先前匹配的值不同即可
)關閉前瞻.*匹配該行的其余部分
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/513185.html
標籤:正则表达式perl
上一篇:Perl正則運算式命名組陣列
