嗨,大家好我是使用正則表達式的新手。所以如果我的一些問題很基本,請耐心等待。我需要過濾一個大文件的一些數據。 所述數據文件的一部分看起來像這樣matlab中的多線正則表達式
<abcd.....z>
<xyz123....etc..etc/>
<xyz123....etc..etc/>
.
.
many more
.
<xyz123....etc..etc/>
</node>
<abcd.....z/>
<abcd.....z/>
<abcd.....z/>
<abcd.....z/>
<abcd.....z>
<xyz123....etc..etc/>
</node>
<abcd.....z/>
和此模式重複多次。
我的要求是獲得第一個<abcd.....z>
以上的</node>
以及它們之間的數據(即全部爲<xyz123....etc..etc/>
)。
對於如 輸出1:
<abcd.....z>
<xyz123....etc..etc/>
<xyz123....etc..etc/>
.
.
many more
.
<xyz123....etc..etc/>
輸出2:
<abcd.....z>
<xyz123....etc..etc/>
我已經使用這個積極的向前看運營商
<abcd.*?>(?=</node>)
但是這個主要的問題是,輸出包括<abcd.....z>
,其中沒有<xyz123....etc..etc/>
在他們下面。 即輸出如下 輸出1:
<abcd.....z>
<xyz123....etc..etc>
<xyz123....etc..etc>
.
.
many more
.
<xyz123....etc..etc>
輸出2:
<abcd.....z/>
<abcd.....z/>
<abcd.....z/>
<abcd.....z/>
<abcd.....z>
<xyz123....etc..etc>
</node>
如果您在輸出2請注意,我不需要前4 <abcd.....z/>
的。我只需要最後一個即。輸出必須是
<abcd.....z>
<xyz123....etc..etc>
再次對不起長時間的帖子,並希望有人可以幫助我在這裏!
給@digitalLink我有正確的表達方式。
這是(<abcd\.*z>(.|\n)*?)(?=<\/node>)
這適用於像regexr和regexp101在線工具。 我注意到這兩個工具在reg表達式的末尾都使用了g修飾符(全局修飾符)。我知道/ g表達式標誌重新存放最後匹配的索引,允許迭代搜索。
這是可能的matlab中? 我是否必須在matlab中明確使用g-modifier? matlab中的等效表達式標誌是什麼
請問有人可以幫我一把。我是matlab新手,無法弄清楚這個!
嘿!感謝您的表達。當我使用regexr.com或regex101.com等在線工具進行檢查時,它的功能就像是一種魅力。但是當我在matlab程序中使用它時,它不起作用。我注意到regexr.com和regexp101.com在你共享的reg表達式的末尾使用了一個g-modifier(全局修飾符)。我是否必須在matlab中明確使用g-modifier?如果可以,請告訴我我該怎麼做?再次感謝 –
我知道/ g表達式標誌重新存放最後匹配的索引,允許迭代搜索。這在matlab中可能嗎?如果是的話matlab中的等效表達式標誌是什麼,它如何與你共享的表達式一起使用? –