私はこの質問を読んでいて、逆のことをしようとしています。このポスターは、接続に関する情報をキャプチャしたいと考えています。ここで、すべての接続名を一致させたいと思います。このファイルについて考えてみましょう。
SOMESCHEMA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = REMOTEHOST)(PORT = 1234))
)
(CONNECT_DATA =
(SERVICE_NAME = REMOTE)
)
)
# comment
MYSCHEMA.world =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = MYHOST)(PORT = 1234))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYSERVICE.LOCAL )
) )
##comment
##comment
MY.OTHER.SCHEMA=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MYHOST)(PORT=1234)))(CONNECT_DATA=(SERVICE_NAME=MYSERVICE.REMOTE)))
SOMEOTHERSCHEMA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1234)) ) (CONNECT_DATA = (SERVICE_NAME = LOCAL) ) )
RexExのルールは十分に単純なはずですが、私はRegExsにひどいです。そのはず:
- 「。」が続く任意の単語に一致します。スペースは無視して、DESCRIPTION、ADDRESS_LIST、ADDRESS、PROTOCOL、HOST、PORT、CONNECT_DATA、またはSERVICENAMEではありません。
- #が前に付いている単語は無視し、スペースも無視します。
これを支援できる正規表現の専門家はいますか?「スペースを無視する」という要件は、コード内の空白を最初に削除することで解消できます。
結果は一致するはずです:
- SOMESCHEMA
- MYSCHEMA.world
- MY.OTHER.SCHEMA
- SOMEOTHERSCHEMA