[英]How to match regex pattern on single line only?
我有以下正則表達式和示例輸入:
你可以看到它匹配第一個“喲”。 我只希望模式在同一行(第二個“yo”)模式上與“cut me”匹配。
如何確保正則表達式匹配僅在同一行?
輸出:
Hi
預期輸出(這是我真正想要的):
Hi
yo keep this here
Keep this here
你可以使用這個正則表達式與s
(DOTALL)正則表達式標志:
^.*?(?=yo\b[^\n]*cut me:)
yo\\b[^\\n]*cut me:
是先行模式,確保帶有單詞邊界的yo
和cut me:
匹配在同一行。
刪除s
或DOTALL
標志並將正則表達式更改為以下內容:
^.*?((\yo\b.*?(cut me:)[\s\S]*))
啟用DOTALL
標志.
將匹配換行符,因此您的匹配可以跨越多行,包括yo
之前的行或yo
之間的行和cut me
。 通過刪除此標志,您可以確保只匹配yo
和cut me
,然后將.*
末尾的.*
更改為[\\s\\S]*
,它將匹配包括換行符在內的任何字符,以便您可以匹配字符串的結尾。
編輯:請注意,這與其他答案略有不同,這將匹配您要刪除的字符串部分,因此您可以用空字符串替換此部分以將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.