Я хочу использовать регулярное выражение для соответствия любому регистру только с 1 двоеточием перед именем или за ним, но не с именем между двумя двоеточиями.
Соответствует таким вещам:
name: | :name | name:`asdf`
Но не должно совпадать ни с одним из них:
:name:
eman:
nnamee:
:nameasdfj
У меня есть регулярное выражение, которое, я думаю, охватывает все случаи для первых трех, но оно также соответствует :name: чего я не хочу:
((?:^|\W)name:(?:$|\W))|((?:^|\W):name(?:$|\W))
name
является фиксированной строкой? Если да, попробуйте(?<!\w):?name(?!\w)(?!(?<=:name):)
, см. демонстрацию. - person Wiktor Stribiżew   schedule 06.06.2020:nameasdfj
не должно совпадать? Предполагая, что это так, и вы просто хотите сопоставить допустимые экземпляры"name"
, вы можете использовать регулярное выражениеr':name(?!:)|(?<!:)name:'
,(?!:)
в качестве отрицательного просмотра вперед и(?<!:)
в качестве отрицательного просмотра назад. Демо - person Cary Swoveland   schedule 06.06.2020