亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多行文本的負前瞻斷言

多行文本的負前瞻斷言

慕無忌1623718 2022-06-15 09:38:14
我正在尋找一種方法來檢查多行字符串(來自pdf)是否包含一定不能以特定前綴開頭的特定字母組合。具體來說,我正在嘗試查找包含ARC但不包含的字符串NON-ARC。我發現了這個很好的示例正則表達式,用于不以序列開頭的字符串,但它似乎不適用于我的問題。使用我的模式^(?!NON\\-)ARC.*,我在單行測試中得到了預期的結果,在實際輸入的情況下,否定前瞻斷言有誤報。這是我所做的:@Testpublic void testRegexLookAhead() {    String strTestSimplePos = "ARC 0.1-1";    String strTestSimpleNeg = "NON-ARC 3.4-1";    String strTestRealPos = "HEADLINE\r\n" + "Subheader Author\r\n" + "ARC 0.1-1\r\n" + "20190211";    String strTestRealNeg = "HEADLINE\r\n" + "Subheader Author\r\n" + "NON-ARC 0.1-1\r\n" + "20190211";    //based on https://stackoverflow.com/questions/899422/regular-expression-for-a-string-that-does-not-start-with-a-sequence    String regexNoNON = "^(?!NON\\-)ARC.*";                   Pattern noNONPatter = Pattern.compile(regexNoNON);    System.out.println(noNONPatter.matcher(strTestSimplePos).find()); //true OK     System.out.println(noNONPatter.matcher(strTestSimpleNeg).find()); //false OK    System.out.println(noNONPatter.matcher(strTestRealPos).find()); //false but should be true -> does not work as intended    System.out.println(noNONPatter.matcher(strTestRealNeg).find()); //false OK 如果有人能指出出了什么問題,我會很高興...編輯:這被標記為How to use java regex to match a line - 但是我根本沒有嘗試使用 regex 來匹配行。只需要一種方法來為多行文本輸入找到特定序列(帶有負前瞻)。解決另一個問題的一種方法也是解決這個問題的方法(使用 java.util.regex.Pattern.MULTILINE 編譯模式) - 但問題充其量是相關的。
查看完整描述

2 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

您的輸入字符串有多行并且您正在使用插入符號,您需要添加多行標志:

Pattern.compile(regexNoNON, java.util.regex.Pattern.MULTILINE);

關于多線

啟用多行模式。

在多行模式中,表達式 ^ 和 $ 分別在行終止符或輸入序列的結尾之后或之前匹配。默認情況下,這些表達式只匹配整個輸入序列的開頭和結尾。


查看完整回答
反對 回復 2022-06-15
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

試試這個正則表達式:

HEADLINE(?:(?!HEADLINE)[\s\S])*(?<!NON-)ARC(?:(?!HEADLINE)[\s\S])*

點擊演示

JAVA代碼

解釋:

  • HEADLINE- 匹配單詞HEADLINE

  • (?:(?!HEADLINE)[\s\S])*- 匹配不以單詞開頭的任何字符的 0+ 次出現HEADLINE

  • (?<!NON-)ARCARC-如果單詞前面沒有緊跟,則匹配該單詞NON-

  • (?:(?!HEADLINE)[\s\S])*- 匹配不以單詞開頭的任何字符的 0+ 次出現HEADLINE


查看完整回答
反對 回復 2022-06-15
  • 2 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號