Javascript 用于匹配单行文本/字符的正则表达式模式
例如,对于以下字符串,我将使用什么正则表达式模式来匹配(并返回一个匹配数组)单行文本/字符(,如以字符开头,而不是以符号和空格开头)): 。。。理想情况下,我希望通过使用Google Apps脚本和Javascript 用于匹配单行文本/字符的正则表达式模式,javascript,regex,google-apps-script,Javascript,Regex,Google Apps Script,例如,对于以下字符串,我将使用什么正则表达式模式来匹配(并返回一个匹配数组)单行文本/字符(,如以字符开头,而不是以符号和空格开头)): 。。。理想情况下,我希望通过使用Google Apps脚本和RegExp的exec()或String的match() 以下是我到目前为止的脚本: function testRegex() { var test = "** Header\n------------------------------------------------------------
RegExp
的exec()
或String
的match()
以下是我到目前为止的脚本:
function testRegex() {
var test = "** Header\n------------------------------------------------------------\n\nhttps://www.google.com Google Homepage\n\nTest description for Google homepage\n\nStack Overflow (https://www.stackoverflow.com)\n\nTest description for Stack Overflow"
var regExp = RegExp(".*");
var matches = regExp.exec(test);
for each (var match in matches) {
Logger.log("match: " + match);
}
}
。。。哪些产出:
match: ** Header
match: 0
match: ** Header
------------------------------------------------------------
https://www.google.com Google Homepage
Test description for Google homepage
Stack Overflow (https://www.stackoverflow.com)
Test description for Stack Overflow
^请注意,如何在单行中不单独记录匹配
我还尝试了一种Regex模式,如RegExp(“^[a-zA-Z].*)
,只用于以字符开头的行,但没有匹配项
或者,我最好使用split()?如果是这样的话,我希望排除以符号或空格开头的行,并获得类似于我上面提到的输出。*
匹配一行文本
^[a-zA-Z].
匹配以字母开头的行这可能有些过分,但它可以工作
const regex=/([A-Za-z\*\:\.\s/\-\(\)]*)(\\n)/gm;
常量str=`**Header\\n------------------------------------------------\\n\\nhttps://www.google.com 谷歌主页\\n\\n谷歌主页的测试说明\\n\\n堆栈溢出(https://www.stackoverflow.com)\\n\\n堆栈溢出“”的测试说明;
常量subst=`1\n`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);
log('替换结果:',结果)代码>你尝试了什么?看看[regex101.com[()。如果您使用的是正则表达式。您是否尝试在换行符上拆分?是的,我尝试了该网站,但它可能是骗人的,因为
点表示法在JavaScript中似乎不受支持,或者至少在Google Apps脚本中不受支持-因此我一直在尝试使用\\s\\s
与其他正则表达式组合从exec中输出匹配数组()
或匹配()
函数,但没有用。此外,我对问题进行了一些编辑。您能提供当前脚本吗?如果您包括您尝试过的内容,以及哪些内容没有按预期工作,这将真正帮助我们。您得到了什么与您期望的相比。帮助中心提供了大量资源,可以以某种方式解释如何编写问题为了有效地帮助我们,请帮助您。如果您在javascript REPL中尝试的结果与在Google Apps中尝试的结果不同吗?@Tanaike Ok,已更新。很抱歉没有首先包含我的内容!
点表示法在javascript中不起作用,或者至少在Google Apps脚本中不起作用。因此,我一直求助于\s\s
与其他一些正则表达式组合,使用exec()
或match()
输出匹配数组。哦,顺便说一句,我对问题进行了编辑
function testRegex() {
var test = "** Header\n------------------------------------------------------------\n\nhttps://www.google.com Google Homepage\n\nTest description for Google homepage\n\nStack Overflow (https://www.stackoverflow.com)\n\nTest description for Stack Overflow"
var regExp = RegExp(".*");
var matches = regExp.exec(test);
for each (var match in matches) {
Logger.log("match: " + match);
}
}
match: ** Header
match: 0
match: ** Header
------------------------------------------------------------
https://www.google.com Google Homepage
Test description for Google homepage
Stack Overflow (https://www.stackoverflow.com)
Test description for Stack Overflow