Получение некоторых значений из этого регулярного выражения

#regex #vb.net

#регулярное выражение #vb.net

Вопрос:

 "_anim(d )$"
  

Хорошо, с этим я могу проверить наличие любой строки с _anim суффиксом в порядке.
Но мне нужно получить значение внутри круглой скобки (которое, как я ожидаю, будет целым числом). И мне также нужно будет получить значение перед префиксом _anim (который, как я ожидаю, будет строкой).

Вот чего я не понимаю: как оно «получает» значения, вместо того, чтобы просто «знать», что совпадение было?

Комментарии:

1. Это хорошо задокументировано в библиотеке MSDN. Вы задаете слишком много вопросов, они скучные и повторяющиеся. Смотрите meta.stackexchange.com/questions/19665/the-help-vampire-problem

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

Ответ №1:

Это делается путем помещения объектов в группы захвата. в регулярном выражении они определяются круглыми скобками, поэтому, я полагаю, вам нужно избегать их в вашем регулярном выражении выше, поскольку вы хотите проверить наличие фактических круглых скобок.

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

 Dim ResultString As String
Try
    ResultString = Regex.Match(SubjectString, "(.*)_anim((d ))$").Groups(1).Value
Catch ex As ArgumentException
    'Syntax error in the regular expression
End Try
  

0 будет полным совпадением, 1 будет значением перед _anim, а 2 в данном случае будут вашими цифрами.