regex для соответствия EOF

Новые переменные могут быть decalared только в области действия блока. Необходимо записать что-то вроде этого:

case VAL:  
  // This will work
  {
  int newVal = 42;  
  }
  break;

, Конечно, newVal только имеет объем в фигурных скобках...

С наилучшими пожеланиями, Ralph

81
задан Alan Moore 23 July 2009 в 12:24
поделиться

6 ответов

The answer to this question is \Z took me awhile to figure it out, but it works now. Note that conversely, \A matches beginning of the whole string (as opposed to ^ and $ matching the beginning of one line).

147
ответ дан 24 November 2019 в 09:31
поделиться

EOF на самом деле не является символом. Если у вас многострочная строка, то '$' будет соответствовать концу строки, а также концу строки.

В Perl и его собратьях \ A и \ Z соответствует началу и концу строки, полностью игнорируя разрывы строк.

Расширения GNU для регулярных выражений POSIX используют \ ` и \ ' для тех же целей .

22
ответ дан 24 November 2019 в 09:31
поделиться

Вам действительно нужно захватывать разделители строк? Если нет, то это регулярное выражение должно быть всем, что вам нужно:

/\w+/

Предполагается, что все подстроки, которые вы хотите сопоставить, полностью состоят из словесных символов, как в вашем примере.

3
ответ дан 24 November 2019 в 09:31
поделиться

Может быть, попробовать $ (EOL / EOF) вместо (\ r \ n | \ n)?

/\"(.+?)\".+?(\w.+?)$/
2
ответ дан 24 November 2019 в 09:31
поделиться

Предполагая, что вы используете правильный модификатор, заставляющий обрабатывать строку в целом (не построчно - и если \ n работает для вас, значит, вы его используете), просто добавьте другую альтернативу - конец строки: (\ r \ n | \ n |, | $)

1
ответ дан 24 November 2019 в 09:31
поделиться

/ (\ w. +?) (\ R \ n | \ n |, | $) /

0
ответ дан 24 November 2019 в 09:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: