我试图使用JS从文本文件中提取整个段落,然后将其放入html元素。我已经读了相当多的帖子和文章,但我不能得到正确的正则表达式公式。这是文本文件的摘录:
Doing initial required tests
Testing server: xxxxxxxxyyyyyyyy
Starting test: Connectivity
* Active Directory LDAP Services Check
Determining IP4 connectivity
* Active Directory RPC Services Check
......................... yyyyyyyy passed test Connectivity
Doing primary tests
我需要提取的是"Starting test: Connectivity"直到"通过连接性测试"。这是我正在尝试的JS代码:
async function getText(file) {
let dcdiagFile = await fetch(file);
let dcDiag = await dcdiagFile.text();
let connectivity = dcDiag.match(/Starting test: Connectivity[nr]+$(.*)(/gm) || [];
document.getElementById("DNS").innerHTML = connectivity;
console.log(connectivity);
}
getText("./dcdiagreport.txt");
'在我的代码中,我只能看到第一行。我认为通配符可以解决这个问题,但是如果我像下面那样添加单词Connectivity:
let connectivity = dcDiag.match(/Starting test: Connectivity[nr]+$(.*)Connectivity (/gm) || [];
我什么都没得到。在其他编程语言中,我会使用"文本开始*文本结束";段落。但不是在JS中。它是一个内部网无internet服务器,最好我不想下载jquery。只有香草JS。
<代码>代码>
您可以使用.match()
而不是regex1
来只保留您需要的文本。
您没有指定是否要包含或排除键"开始测试:连接性"。直到"通过连接性测试"。下面是regex2
包含键,regex1
不包含键的测试:
PP_4
^
:
.*?
——文本起始锚(
—非贪婪扫描Starting test: Connectivity
—开始捕获组1.*?
—期望文本passed test Connectivity
—非贪婪扫描)
—期望文本.*
—捕获组1结束$
—贪婪扫描/s
——锚定在文本末尾s
——修改符.
在regex2
中包含换行符
.replace()
0的解释:
- 与CC_21相似,但捕获组更窄