Регулярное выражение, проверяющее, что строка не должна начинаться или заканчиваться пробелом и не должна заканчиваться точкой (.)

В соответствии с требованием мне нужно сгенерировать регулярное выражение, чтобы соответствовать строке, которая не начинается или заканчивается пробелом. Кроме того, строка не должна заканчиваться точкой специального символа (.). Согласно моему пониманию, я сгенерировал регулярное выражение "\\S(.*\\S)?$" которые ограничивают строку, которая имеет пробел в начале и в конце строки. С этим выражением мне нужно проверить регулярное выражение для строки, которая заканчивается точкой. Любая помощь будет оценена.

2 ответа

Решение

Используйте следующее регулярное выражение

^\S.*[^.\s]$

Объяснение здесь

Визуализация регулярных выражений


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

^(?=\S).+(?<=[^.\s])$

Объяснение здесь

Визуализация регулярных выражений


Если оглядка не поддерживается, используйте

^(?=\S).*[^.\s]$

Объяснение здесь

Визуализация регулярных выражений

Вы можете использовать шаблон: ^[^\ ].*[^\ .]$

Вот демонстрация:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add(" This string starts with a space");
        list.add("This string ends with a space ");
        list.add("This string ends with a dot.");
        list.add("This string ends with a newline\n");
        list.add("\tThis string starts with a tab character");

        Pattern p = Pattern.compile("^[^\\ ].*[^\\ .]$");

        for (String s : list) {
            Matcher m = p.matcher(s);
            if (m.find())
                System.out.printf("\"%s\" - Passed!\n", s);
            else
                System.out.printf("\"%s\" - Didn't pass!\n", s);
        }
    }
}

Это производит:

" This string starts with a space" - Didn't pass!
"This string ends with a space " - Didn't pass!
"This string ends with a dot." - Didn't pass!
"This string ends with a newline
" - Passed!
"   This string starts with a tab character" - Passed!
Другие вопросы по тегам