我有一些遵循这种模式的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>
&#34; ALLCAPSWORD&#34;之后的行数。 line`变化,因此它可以是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
有关如何捕获所有具有小写文本的行的提示,直到它到达包含全文字幕的下一行,冲洗并重复?
答案 0 :(得分:0)
可以这样做
<p id="monthNumber">
2
</p>
console.log(getNumOfDays());
function getNumOfDays(){
var array = new Array(1,3,5,7,8,10,12, 01, 03, 05, 07, 08);
var monthNumber = document.getElementById("monthNumber").innerHTML;
var x;
for(var i = 0; i <= array.length; i++) {
if(monthNumber == array[i]) {
x = 31;
break;
} else {
x = 30;
} //it always returns 1 to array[i]
}
return x;
}
https://regex101.com/r/TfDsL9/1
扩展
(?m)^.*?ALLCAPSTEXT.*(?:(?!^.*?ALLCAPSTEXT)[\S\s])*
答案 1 :(得分:0)
<p>\d+\.\s[A-Z]+.*<\/p>(\n+<p>\d+\.\s[a-z]+.*<\/p>)+