正则表达式:删除 STRING 之前的所有行,除了特定行

正则表达式:删除 STRING 之前的所有行,除了特定行

我想删除之前的所有行<!DOCTYPE html>,但我想保留以以下内容开头的行:$item_id =

<?<!-- ÉTOILES R -->);
    
     $item_id = 1442 ; // Remplacez-le par votre identifiant de notation.
    
     // Si vous voulez que la note fonctionne avec les Rich-Snippets,
     // définit la classe d'évaluation sur l'une des valeurs suivantes :
     // produit, page, blog-post, post, front-post, article
     $rating_class = 'page';
?>

<!DOCTYPE html>

输出应该是

     $item_id = 1442 ; // Remplacez-le par votre identifiant de notation.

     <!DOCTYPE html>

我的正则表达式失败:

寻找:(?s)\A(^.*)(<!DOCTYPE html>)(?!\$item_id =.*?id)

替换为:\3\2

答案1

  • Ctrl+H
  • 找什么:\A[\s\S]*?(^\h*\$item_id.+\R)[\s\S]+?(?=\R<!DOCTYPE html>)
  • 用。。。来代替:$1
  • 打钩 相符
  • 打钩 环绕
  • 选择 正则表达式
  • 取消勾选 . matches newline
  • Replace all

解释:

\A              # beginning of file
[\s\S]*?        # 0 or more any character, not greedy
(               # group 1
  ^               # beginning of line
    \h*             # 0 or more horizontal spaces
    \$item_id       # literally $item_id
    .+              # 1 or more any character but newline
    \R              # any kind of linebreak
)               # end group 1
[\s\S]+?        # 1 or more any character, not greedy
(?=\R<!DOCTYPE html>)   # positive lookahead, make sure we have DOCTYPE after

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容