Regex для захвата n-го вхождения символа - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу захватить третью запятую в виде строк:

98,52,"110,18479456000019"

Я думал о чем-то похожем на персонажа, кроме:

[^"0123456789]

Но результатом стал захват всех запятых.

После этого я попробовал несколько выражений о n-м захвате - кажется, это решение - но ни один из них не работает.

Как мне решить эту проблему?

1 Ответ

1 голос
/ 27 апреля 2019

Есть несколько способов захвата третьего , . Этот RegEx является одним из способов сделать это:

([\d,])\x22\d+(,)\d+\x22

, где желаемый , находится во второй группе (,) , простобыть простым, и вы можете назвать это, используя $ 2 .

Я добавил дополнительные границы для этого RegEx для безопасности, которые вы можете удалить:

enter image description here

\ x22 - это просто ", который вы можете заменить, если хотите:

([\d,])"\d+(,)\d+"

. Вы также можете использовать ( \ ) ипри необходимости экранируйте символ.


Если ваш ввод будет немного более сложным, может быть, например, так:

enter image description here

Вы можете создать среднюю границу перед третьей , и добавить все возможные символы в средней границе ([\d\w\"]+), например this RegEx :

 (\d+,){2}[\d\w\"]+(,)

и запишите третий , , используя $ 2 . На этот раз вы также можете расслабить выражение лица с правой стороны, и оно все равно будет работать.

Возможно, вытакже добавьте начало ^ в регулярное выражение:

^(\d+,){2}[\d\w\"]+(,)

в качестве дополнительной левой границы, что означает, что ваш ввод должен начинаться с этого выражения.

...