Regex найти символ '.' за исключением слов, начинающихся с @

1

предполагая следующее предложение:

это @sys.any и. здесь @names привет. и good.bye

как бы я нашел все ". кроме тех, которые появляются в словах, начинающихся с @?

отказ от ответственности, играл в regex101 более 2 часов после прочтения нескольких ответов на SO и других форумах.

  • 2
    Насколько важно, что решение на самом деле включает в себя регулярное выражение? Вы могли бы сделать это в Python с пониманием списка и несколькими строковыми методами.
Теги:
regex-negation
regex-group

2 ответа

2

(^|\s)(\w*(\.))+ - это может удовлетворить текст примера, который вы опубликовали. Вы можете найти все. в третьей группе

ОБНОВЛЕНИЕ: если в тексте у вас есть слова, начинаются с любого другого символа, например, #asd.qwe.zxc, вы можете улучшить свой reg exp:

(^|\s)[^@]?(\w*(\.))+

  • 0
    выдающийся, больной дальнейший тест использовать это регулярное выражение. на данный момент это работает для приведенного примера. если кто-то может придумать крайние случаи, чтобы противостоять этому ответу, я был бы очень признателен.
  • 0
    Я нашел крайний случай, когда это регулярное выражение не работает, regex101.com/r/FtjRfL/1 , как вы можете видеть в первой работе «[email protected]». Я бы ожидал, что он найдет все "." так как @ не в начале слова.
Показать ещё 2 комментария
1

Регулярное выражение ^@|\s\w*(\.)+ Может использоваться только для поиска и сопоставления периодов без @.

См. Живой пример для справки: http://rubular.com/r/gfVY3j16Rx

  • 0
    regex101.com/r/FtjRfL/1 ?
  • 0
    это работает, как задумано, насколько я понял ОП? @ splash58
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню