RegEx для поиска различных форматов строки

У меня есть два регулярных выражения:

([^.]*string)
((?<![.]\.)string)

Оба работают. Но я не хочу искать строку, в которой есть точка.

1) .string

2) string

Для первого регулярного выражения оно соответствует остальной части строки, кроме точки.

Второй - полное совпадение

Regex соответствует обоим.

Я хочу регулярное выражение, которое получает только второе.


person Khalil    schedule 12.05.2019    source источник
comment
Попробуйте это: ^string$   -  person    schedule 12.05.2019
comment
Это немного расплывчато, но, насколько я понимаю, почему бы не использовать \w, чтобы не совпадать с периодами. Например ^\w+   -  person Xosrov    schedule 12.05.2019
comment
Вы подчеркиваете запятую в своем вопросе, но используете точку в своих регулярных выражениях.   -  person revo    schedule 12.05.2019
comment
^string$ тоже не работает   -  person Khalil    schedule 12.05.2019
comment
Вам нужно (?<!\.)string   -  person revo    schedule 12.05.2019
comment
Это работает, (?‹!\.)строка   -  person Khalil    schedule 12.05.2019
comment
Также вы можете объяснить, почему это не сработало ((?‹![.]\.)строка)   -  person Khalil    schedule 12.05.2019
comment
Можете ли вы объяснить, что вы пытаетесь сделать.   -  person    schedule 12.05.2019
comment
((?<![.]\.)string) на самом деле очень близкое решение, почти правильное, но оно не работает, потому что соответствует string, которому не предшествуют две точки. [.]\. соответствует .. строке.   -  person Wiktor Stribiżew    schedule 12.05.2019


Ответы (2)


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

([\s\S]*?)(\.?)
([\w\W]*?)(\.?)
([\d\D]*?)(\.?)

Демо.

введите здесь описание изображения

Цепь регулярных выражений

jex.im визуализирует обычные выражения:

введите здесь описание изображения

Если мы хотим найти экземпляры string без точки, такие как .string или .string. или .string", то мы можем просто перечислить их в выражении, похожем на:

 ([\s\S]*?)(\sstring|\x22string\x22|\x27string\x27)?
 ([\w\W]*?)(\sstring|\x22string\x22|\x27string\x27)?
 ([\d\D]*?)(\sstring|\x22string\x22|\x27string\x27)?

введите здесь описание изображения

введите здесь описание изображения

person Emma    schedule 12.05.2019
comment
Извините за невежество, а в чем разница между ([\s\S]*?) и (.*?) ? - person Paul Lemarchand; 12.05.2019

Попробуйте это регулярное выражение:

((?<!\.)string)

Он использует отрицательный взгляд назад.

person hacker315    schedule 12.05.2019