簡體   English   中英

正則表達式遺漏字符串中的匹配項

[英]Regular Expression misses matches in string

我正在嘗試編寫一個正則表達式來捕獲字符串 ("f38 ","f38 ","f1 ", "..") 和 ("\par","\hich","{","來自反編譯的 DOC 文件的 }","","..") 和 append 每個都匹配一個數組,最終被打印到一個新文件中。

我在捕獲“f38”和“\hich”之間的某些字符串時遇到問題(通常當字符串跨越多行時,但至少有 1 個例外,我在 DOC 文件的示例字符串片段中找到了我在 regex101.com 上使用)

這是我現在擁有的正則表達式

(?<=f38  |f38 | |f1 |\.\.)\w.+(?=\\par|\\cell |\\hich|{|}|\\|\.\.)

麻煩的匹配結果包括“\hich”。 像 "e\hich" 和 "d\hich" 一樣,我想在這些示例中分別匹配 "e" 和 "d" 而不是 \hich 部分。 我認為問題在於以某種方式處理換行符/換行符。

這是輸入字符串的一小段,我將匹配的內容加粗,並將有問題的匹配加粗+大寫。 由此我想要“e”而不是\hich。 請注意,上面有 2 個正確的例子,匹配中不包括“\hich”。

l \hich\af38\dbch\af31505\loch\f38..可能涉及石棉暴露:ACM 的移除、封裝、改造、修理、維護、絕緣、泄漏/緊急清理、運輸、處置和儲存。 一般行業標准涵蓋了可能暴露於 asb ..\hich\af38\dbch\af31505\loch\f38 E\HICH \af38\dbch\af31505\loch\f38 stos的所有其他操作

這是一個示例,其中輸入字符串的較長部分位於 regex101.com

任何幫助,將不勝感激。 謝謝!

問題在於您要匹配那些單字符樣本的部分。 \w.+需要至少兩個字符才能匹配。 因此,當您得到 "e\hich" 時,第一個反斜杠與正則表達式中的點匹配並持續到下一個反斜杠(這是正則表達式的正前瞻部分中列出的“終止符”之一)。

您可能想使用*而不是+

暫無
暫無

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

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