![](/img/trans.png)
[英]Regex to replace all instances of \r not followed by \n with \r\n
[英]Regex find then replace for all instances
我有一個用Javascript文件的腳本標簽填充的字符串,我想用.min.js替換.js的所有實例。 我不能假定字符串的內容將采用如下所示的相同格式。 因此,我需要將替換限制在src =部分內。
我假設正則表達式最適合此操作,但是我將如何進行查找,然后替換所有實例?
<script type=\"text/javascript\" src=\"../../Scripts/json.js\"></script><script type=\"text/javascript\" src=\"../../Scripts/Logger.js\"></script> <script type=\"text/javascript\" src=\"../../Scripts/PageHelper.js\"></script>
另一個考慮因素是,我不想替換已經定義為min.js的.min.js。
免責聲明:我不建議將正則表達式用於html解析...
如果腳本標記引號沒有轉義(不應轉義),則應該可以
======================
原始正則表達式查找
<script(?=\s)(?=((?:[^>"']|"[^"]*"|'[^']*')*?)(?<=\s)src\s*=(?:(?>\s*(['"])\s*((?:(?!\g{-2}).)+)(?<!\.min)\.js\s*\g{-2})|(?>(?!\s*['"])\s*([^\s>]*)(?<!\.min)\.js(?=\s|>)))((?>(?:".*?"|'.*?'|[^>]?)+)))(?>\s+(?:".*?"|'.*?'|[^>]*?)+>)(?<!/>)
原始替換
<script$1src="$3$4.min.js"$5>
修飾符“ s”,單行(表示點全)
擴展正則表達式
<script
(?=\s)
(?=
( (?: [^>"']|"[^"]*"|'[^']*')*? ) (?<=\s) # (1) - before 'src'
src \s*=
(?:
(?> \s* (['"]) \s* ((?:(?!\g{-2}).)+ ) (?<!\.min)\.js \s* \g{-2} ) # (2,3)
| (?> (?!\s*['"]) \s* ([^\s>]*) (?<!\.min)\.js (?=\s|>) ) # (4) - use $3.$4
)
( (?> (?:".*?"|'.*?'|[^>]?)+ ) ) # (5) - after 'src'
)
(?> \s+ (?:".*?"|'.*?'|[^>]*?)+
>
) (?<! /> )
要么 ...
<script
(?= \s )
(?=
1 (
(?: [^>"'] | " [^"]* " | ' [^']* ' )*?
1 )
(?<= \s )
src\s*=
(?:
(?>
\s*
2 ( ['"] )
\s*
3 (
(?:
(?! \g{-2} )
.
)+
3 )
(?<! \.min )
\.js\s*\g{-2}
)
|
(?>
(?! \s* ['"] )
\s*
4 ( [^\s>]* )
(?<! \.min )
\.js
(?= \s | > )
)
)
5 (
(?>
(?: ".*?" | '.*?' | [^>]? )+
)
5 )
)
(?>
\s+
(?: ".*?" | '.*?' | [^>]*? )+
>
)
(?<! /> )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.