[英]How do I select multiple lines in a regular expression?
我有一些遵循這種模式的HTML:
<p>1. ALLCAPSTEXT1 - etc etc</p>
<p>01. lowercasetext1 - etc etc</p>
<p>02. lowercasetext1 - etc etc</p>
<p>2. ALLCAPSTEXT2 - etc etc</p>
<p>01. lowercasetext2 - etc etc</p>
<p>02. lowercasetext2 - etc etc</p>
<p>03. lowercasetext2 - etc etc</p>
<p>3. ALLCAPSTEXT3 - etcetc</p>
<p>01. lowercasetext3 - etc etc</p>
“ ALLCAPSWORD”行之后的行數有所不同,因此可以在1到10+之間的任意位置。 我想用這種模式選擇所有這些行(最多100行)。
到目前為止,我有:
<p>(\d+)\.\s[A-Z][A-Z]+(.+)</p>\n+<p>(.+)</p>\n+<p>\d+\.\s[A-Z][A-Z]+(.+)</p>
其中第一個p標簽中的內容捕獲具有全大寫文字的行,然后轉到下一行,p標簽中的內容捕獲具有小寫文字的該行,然后轉到具有大寫形式的下一行文本。
所以我希望它能得到所有這些:
<p>1. ALLCAPSTEXT1 - etc etc</p>
<p>01. lowercasetext1 - etc etc</p>
<p>02. lowercasetext1 - etc etc</p>
但它只捕獲全大寫文本之后的第一行,然后跳至全大寫文本的下一行,並執行相同的操作。
<p>1. ALLCAPSTEXT1 - etc etc</p>
<p>01. lowercasetext1 - etc etc</p>
然后轉到:
<p>2. ALLCAPSTEXT2 - etc etc</p>
<p>01. lowercasetext2 - etc etc</p
關於如何獲取所有具有小寫字母的行的提示,直到到達全大寫文本的下一行,然后沖洗並重復?
可以這樣
(?m)^.*?ALLCAPSTEXT.*(?:(?!^.*?ALLCAPSTEXT)[\\S\\s])*
https://regex101.com/r/TfDsL9/1
展開式
(?m)
^ .*? ALLCAPSTEXT .*
(?:
(?! ^ .*? ALLCAPSTEXT )
[\S\s]
)*
<p>\d+\.\s[A-Z]+.*<\/p>(\n+<p>\d+\.\s[a-z]+.*<\/p>)+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.