Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于匹配单行文本/字符的正则表达式模式_Javascript_Regex_Google Apps Script - Fatal编程技术网

Javascript 用于匹配单行文本/字符的正则表达式模式

Javascript 用于匹配单行文本/字符的正则表达式模式,javascript,regex,google-apps-script,Javascript,Regex,Google Apps Script,例如,对于以下字符串,我将使用什么正则表达式模式来匹配(并返回一个匹配数组)单行文本/字符(,如以字符开头,而不是以符号和空格开头)): 。。。理想情况下,我希望通过使用Google Apps脚本和RegExp的exec()或String的match() 以下是我到目前为止的脚本: function testRegex() { var test = "** Header\n------------------------------------------------------------

例如,对于以下字符串,我将使用什么正则表达式模式来匹配(并返回一个匹配数组)单行文本/字符(,如以字符开头,而不是以符号和空格开头)):

。。。理想情况下,我希望通过使用Google Apps脚本
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