Как извлечь это с помощью регулярного выражения - PullRequest
2 голосов
/ 10 февраля 2012

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

a#d3d,b#3jjf,c#44k
c#999,b#a1a,a#11a

Я хочу извлечь значение после "c #" и перед следующей запятой (,). Я хочу извлечь значение "44k" из первой строки и значение "999" из второй строки. Я думал, что будет работать следующее:

.*c#(.*),.*

но это не так. О, и английское объяснение регулярного выражения поможет мне лучше понять ваш ответ.

Ответы [ 6 ]

4 голосов
/ 10 февраля 2012

Здесь усовершенствованная версия просмотра назад

(?<=c#)[^,\s]+

См. здесь на Regexr

(?<=c#) - это утверждение с задним взглядом, оно обеспечивает наличие c# слева от шаблона.

[^,\s]+ - это класс символов с отрицанием, вместе с квантификатором + он будет соответствовать как минимум одному символу, который не является запятой или пробелом.

2 голосов
/ 10 февраля 2012
c#([^,\s]+)

Это должно сделать это. Найдите c#, а затем возьмите один или несколько символов, которые не являются запятой или пробелом (означает, что конец строки также заканчивает совпадение).

1 голос
/ 10 февраля 2012

Я попробовал (?<=c#)[a-z0-9]+ и получил то, что хотел.

1 голос
/ 10 февраля 2012

c#(.+?)(,|$) используйте это регулярное выражение
.+? является ленивым регулярным выражением.Он будет соответствовать всему, пока не найдет запятую или конец строки.
И после этого matcher.group (1) вернет то, что вам нужно.

0 голосов
/ 10 февраля 2012

вы можете использовать это регулярное выражение

(c#(.{3}[^, ]+)|$)+

Это регулярное выражение будет соответствовать c # в начале и последнему c # в конце строки.C # между строкой не будет приниматься во внимание, я надеюсь, что это то, что вы хотели.

чтобы вы получили подстроку C #, такую ​​как "44k" или "999", вы быиспользовать подстроку api в String java для получения значений из регулярного выражения.

Надеюсь, это поможет

0 голосов
/ 10 февраля 2012

Вам нужен не жадный шаблон:

c#.*?(,|$)

.*? означает совпадение с любым символом ноль или более раз, но совпадение как можно меньше. (,|$) означает совпадение запятой или конца строки.

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