免責事項: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+
(?: ".*?" | '.*?' | [^>]*? )+
>
)
(?<! /> )