簡體   English   中英

替換匹配字符串以外的所有內容-JS Regex

[英]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)中遇到了關於這個無休止的問題的一些問題,但是答案是非常特定於特定情況的。

任何幫助,將不勝感激。

謝謝。

您可以將此正則表達式用於String#match調用:

/<property[^>]*name="(username|password)[^>]*>[^<]*</property>/gi

正則演示

盡管我仍然認為您最好在這里使用XML解析器,但這應該可以解決一行問題:

<property[^>]*name="(username|password)".*?</property>

http://regex101.com/r/oM7aD2/1

您將文字<property匹配后跟非文字的任意數量的字符> (如果該行的第一個標簽不是usernamepassword這將阻止您進行匹配),則其余部分與@anubhava相同(盡管我加入了第二個文字的自由"的情況下,您遇到的前綴為其他屬性usernamepassword -如password_expires

暫無
暫無

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

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