【发布时间】:2019-01-27 22:06:31
【问题描述】:
说,对于以下字符串,我将使用什么正则表达式模式来匹配(并返回匹配数组)单行文本/字符(以字符开头,而不是符号和空格强>):
** Header
------------------------------------------------------------
https://www.google.com Google Homepage
Test description for Google homepage
Stack Overflow (https://www.stackoverflow.com)
Test description for Stack Overflow
...理想情况下,我希望 使用 Google Apps 脚本 和 RegExp 的 exec() 或 String 的 match() 得到这样的输出:
["https://www.google.com Google Homepage", "Test description for Google homepage", "Stack Overflow (https://www.stackoverflow.com)", "Test description for Stack Overflow"]
这是我目前的脚本:
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
^ 请注意,匹配项不是单独记录在单行中的。
我还尝试了像 RegExp("^[a-zA-Z].*") 这样的正则表达式模式,仅用于以字符开头的行,但没有匹配项。
或者,我最好改用split() 吗?如果是这样,我想排除以符号或空格开头的行,并获得类似于我上面提到的输出。
【问题讨论】:
-
你尝试了什么?看看 [regex101.com[(regex101.com)。如果您使用正则表达式。您是否要在换行符上拆分?
-
是的,我尝试了该网站,但它可能具有欺骗性,因为 JavaScript 或至少 Google Apps 脚本似乎不支持
.点表示法 - 所以我一直在尝试\\s\\S与其他正则表达式组合从exec()或match()函数输出匹配数组,但无济于事。另外,我稍微编辑了这个问题 -
您能提供您当前的脚本吗?
-
如果您包含您尝试过的内容以及确切没有按预期工作的内容,这将真正帮助我们帮助您。你得到了什么与你所期望的。帮助中心中有大量资源,解释了如何以有效帮助我们帮助您的方式编写问题。如果您在 javascript REPL 中尝试与在 Google Apps 中尝试,您实际上会得到不同的结果吗?
-
@Tanaike 好的,已更新。很抱歉首先没有包括我拥有的东西!
标签: javascript regex google-apps-script