Включая комментарии в регулярных выражениях Java

Я предпочитаю решение T John, но если Вы хотите пойти весь код-golfy, Ваш оператор логически уменьшает до этого:

//if key is down, toggle the boolean, else leave it alone.
flipVal = ((wParam==VK_F11) && !flipVal) || (!(wParam==VK_F11) && flipVal);
if(wParam==VK_F11) Break;

//if key is down, toggle the boolean, else leave it alone.
otherVal = ((wParam==VK_F12) && !otherVal) || (!(wParam==VK_F12) && otherVal);
if(wParam==VK_F12) Break;
14
задан peter.murray.rust 4 September 2009 в 13:37
поделиться

3 ответа

См. Сообщение Мартина Фаулера на ComposedRegex ] для получения дополнительных идей по улучшению читаемости регулярных выражений. Таким образом, он выступает за разбиение сложного регулярного выражения на более мелкие части, которым можно дать значимые имена переменных. например,

String mandatoryName = "([A-Za-z]+)";
String mandatoryWhiteSpace = "\\s+";
String optionalInitial = "([A-Z]\\.)?";
String pattern = mandatoryName + mandatoryWhiteSpace + optionalInitial +
    mandatoryWhiteSpace + mandatoryName;
21
ответ дан 1 December 2019 в 06:24
поделиться

Я обнаружил, что работает следующее:

        String pattern2S = 
            "([A-Za-z]+)      # mandatory firstName\n" +
            "\\s+             # mandatory whitespace\n " +
            "([A-Z]\\.)?      # optional initial\n" +
            "\\s+             # whitespace\n " +
            "([A-Za-z]+)      # mandatory lastName\n"; 

Ключевым моментом было явное включение символа новой строки \ n в строку

12
ответ дан 1 December 2019 в 06:24
поделиться

Почему бы вам просто не сделать это:

String pattern2S = 
    "([A-Za-z]+)" + //    mandatory firstName
    "\\s+" +        //    mandatory whitespace
    ...;

ПРОДОЛЖЕНИЕ:

Если вы хотите сохранить комментарии к шаблону и вам нужно прочитать их из файла свойств, используйте это:

pattern=\
#comment1\\n\
(A-z)\
#comment2\\n\
(0-9)
15
ответ дан 1 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

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