Соответствие регулярному выражению между скобками, останавливающимися на первом месте в скобках - PullRequest
1 голос
/ 17 мая 2019

У меня есть строка типа some data (920 seconds) и я хочу извлечь только 920.

Пока у меня есть \([^)]*\), чтобы извлечь весь текст в скобках. Возвращает (920 seconds)

Как я могу исключить скобки и извлечь что-нибудь после ( остановки в первом пробеле?

РЕДАКТИРОВАТЬ: 920 является строкой, а не целым числом из-за того, как данные отформатированы

Ответы [ 2 ]

3 голосов
/ 17 мая 2019

Вы можете использовать группу захвата, чтобы получить подстроку:

\(([^\s)]*)[^)]*\)

RegEx Demo

1 голос
/ 17 мая 2019

Здесь мы можем просто использовать ( в качестве левой границы и собирать нужные цифры:

(.*?\()[0-9]+(.*)

Мы можем добавить группу захвата вокруг чисел и сохранить ее в $2:

(.*?\()([0-9]+)(.*)

enter image description here

RegEx

Если это выражение нежелательно, его можно изменить или изменить в regex101.com .

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

JavaScript Demo

const regex = /(.*?\()([0-9]+)(.*)/gm;
const str = `some data (920 seconds)
Any other data(10101 minutes)
Any other data(8918 hours)`;
const subst = `$2`;

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

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

Python Test

# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility

import re

regex = r"(.*?\()([0-9]+)(.*)"

test_str = ("some data (920 seconds)\n"
    "Any other data(10101 minutes)\n"
    "Any other data(8918 hours)")

subst = "\\2"

# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)

if result:
    print (result)

# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...