Шаблон регулярного выражения для сопоставления отдельных строк текста / символов - PullRequest
0 голосов
/ 28 января 2019

Скажите, для следующей строки, какой шаблон регулярных выражений я бы использовал для сопоставления (и возврата массива совпадений) для отдельных строк текста / символов (, как в начале с символов, а не как символов и пробелов ):

** 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() или Stringmatch():

["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

^ Обратите внимание на совпаденияне регистрируются индивидуально в одной строке.

Я также пробовал шаблон Regex, например RegExp("^[a-zA-Z].*"), только для строк, начинающихся с символов, но совпадений нет.

Или я былучше использовать split() вместо этого?Если это так, я бы хотел исключить строки, начинающиеся с символов или пробелов, и получить вывод, подобный тому, который я упоминал выше.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Это может быть излишним, но это работает.

const regex = /([A-Za-z\*\:\.\s/\-\(\)]*)(\\n)/gm;
const str = `** 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`;
const subst = `$1\n`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

Просмотрите и измените этот скрипт на regex101

Кажется, split может быть более простым, но я полагаю, вы пыталисьчто перед публикацией Q был помечен регулярным выражением.
Кроме того, я подозреваю, что приведенное выше регулярное выражение может быть значительно упрощено.

0 голосов
/ 28 января 2019

.* соответствует одной строке текста

^[a-zA-Z].* соответствует строке, начинающейся с буквы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...