Не найдено подстроки в регулярном выражении группы - PullRequest
1 голос
/ 24 октября 2011

Я пытаюсь найти подстроку, которая выглядит как "3/4" (любое число 0-9 для числителя и знаменателя). Однако текст, который я пытаюсь проанализировать, может содержать только "/4", если его 1/4. В этих случаях меня не волнует "/", и я хочу только знаменатель. Мое текущее регулярное выражение "[0-9?\\/0-9]", но оно возвращает '3/4' один за другим, когда я хотел вместо этого сгруппировать.

У кого-нибудь есть исправление для этого?

Большое спасибо!

Ответы [ 4 ]

1 голос
/ 24 октября 2011

Это регулярное выражение:

[0-9?\/0-9]

- это класс символов, который соответствует одной цифре, вопросительному знаку или косой черте. Вы хотите это:

[0-9]?\/[0-9]

или это:

\d?\/\d
0 голосов
/ 24 октября 2011

Я думаю, что вы хотите использовать трубу для создания или:

 ([0-9]\/[0-9])|\/([0-9])

Недостатком этого подхода является то, что вам нужно будет проверить, если группа 1 или 2 вернула совпадение ... поэтому, если у вас есть полная дробь, вы получите результат в первой группе, если вы сопоставили знаменатель, знаменатель будет отображаться во второй группе.

Может иметь больше смысла:

([0-9]*\/[0-9])

А затем проверьте длину каждого совпадения и, если нужно, зачеркните '/'.

0 голосов
/ 24 октября 2011

Попробуйте вместо этого:

"([0-9]*\\?[0-9]+)"
0 голосов
/ 24 октября 2011

использовать группу захвата через оператора ( )

[0-9]?\/([0-9])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...