Как извлечь точные 10 di git ISBN10 в формуле Google листов - PullRequest
2 голосов
/ 09 марта 2020

У меня есть следующие данные

ISBN: 9789380658797, 9380658796

Как я могу извлечь isbn10 только из вышеуказанной строки в листе Google, используя формулу REGEXEXTRACT.

Я уже пробовал ниже регулярное выражение, которое не рабочая

1. (?<!\d)\d{10}(?!\d) -> works in regexr.com but not in google sheets. Function REGEXEXTRACT parameter 2 value "(?<!\d)\d{10}(?!\d)" is not a valid regular expression.

2. \d{10} -> return first 10 digit of isbn13

Ответы [ 2 ]

4 голосов
/ 09 марта 2020

Вы можете использовать

REGEXEXTRACT(A1, "(?:^|\D)(\d{10})(?:\D|$)")

См. Демонстрационную версию regex

Дело в том, что:

  • RE2 библиотека регулярных выражений не поддержка обходных путей, поэтому ваши попытки с (?<!...) и (?!...) недопустимы
  • Вам нужно использовать группу захвата, чтобы извлечь эту часть только из совпадения с регулярным выражением и чтобы не совпадать с не-ди git или начало / конец строки, вам нужно использовать группы без захвата , (?:...), здесь (?:\D|^) и (?:\D|$).

enter image description here

2 голосов
/ 09 марта 2020

Это также работает в вашем случае! Я использовал подход, который использовал границу \b..\b, чтобы изолировать строки соответствия. если это не работает, пожалуйста, загрузите больше данных:

=REGEXEXTRACT(A1,"\b\d{10}\b")

enter image description here

...