[英]Replace everything except the matched string - JS Regex
Java Script中的另一個“否定匹配” /“匹配所有內容除外”問題。
所以這是我想做的:
我有一個巨大的文本文件,我想從文件中刪除除用戶名/密碼行之外的所有內容。 以下是文本的示例部分:
<property name="password">QWERTY</property>
....lots of similar tags......
<property name="username">Hello</property>
<property name="passive">1</property>
<property name="password">Test Password</property>
<property name="scheme">smb</property>
<property name="timeout">10000</property>
<property name="username">RANDOM USER</property>
....lots of similar tags......
<property name="username">Sid</property>
我要刪除不是密碼或用戶名的每一行。
我嘗試了以下替換功能,至少從密碼開始,但是它似乎不起作用:
incomingString = incomingString.replace(/[\W\w]*?(?=<property name="password">[\W\w]*?</property).*?/g,"");
回顧過去,我可以理解正則表達式存在太多問題,因此我希望了解一個可以正常工作的正則表達式,該正則表達式將幫助我刪除前面提到的文本中的所有行,並讓我離開
<property name="password">QWERTY</property>
<property name="username">Hello</property>
<property name="password">Test Password</property>
<property name="username">RANDOM USER</property>
<property name="username">Sid</property>
PS:重要的是應保持其在文檔中的順序
我在JavaScript正則表達式(this和lookbehinds)中遇到了關於這個無休止的問題的一些問題,但是答案是非常特定於特定情況的。
任何幫助,將不勝感激。
謝謝。
盡管我仍然認為您最好在這里使用XML解析器,但這應該可以解決一行問題:
<property[^>]*name="(username|password)".*?</property>
http://regex101.com/r/oM7aD2/1
您將文字<property
匹配后跟非文字的任意數量的字符>
(如果該行的第一個標簽不是username
或password
這將阻止您進行匹配),則其余部分與@anubhava相同(盡管我加入了第二個文字的自由"
的情況下,您遇到的前綴為其他屬性username
或password
-如password_expires
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.