Как сделать регулярное выражение для подмножества строк с точечными обозначениями - PullRequest
1 голос
/ 04 июля 2019

Я хочу сопоставить выражения многоточечной нотации но игнорируйте их, если они в строках, где они:

- inside a particular string like 'consts'
- inside a comment
- inside a quoted string

Так что я не хочу ничего сопоставлять с этими 3 строками

a.b.consts.d.e
comment line 'a.b.c.d
quote line "a.b.c.d"

Но НЕОБХОДИМО сопоставить части этих 3 строк

asdf a.b.c.d
a.b c.d .e c.d.e
long a.b.c.d.e.f.g

Я попробовал несколько заглядывающих / отстающих / отрицательных идей с частичным успехом, но ничего, что затрагивало бы все условия одновременно.

Смотрите здесь одну попытку регулярного выражения, которая использует текст описания выше как фактический текст для сравнения: https://regex101.com/r/dSinUs/6

Ответы [ 2 ]

1 голос
/ 04 июля 2019

Это может помочь вам, это немного сложно, но это делает работу

^\b((?!\.\w{2,}\.)[^"'])+(\s*\w{1}\s*\.)+\w$

https://regex101.com/r/dSinUs/7

0 голосов
/ 04 июля 2019

Это выражение, скорее всего, во многих случаях завершится ошибкой из-за [a-z.\s]*, но оно может предоставить другую точку зрения на то, как мы начнем решать эту сложную проблему, но пока я не уверен, что может быть желательным или нежелательным:

^(?!(.*["'])|(.*[a-z]\.consts\.[a-z].*))[a-z.\s]*$

Демо

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