Je travaille sur un script LUA destiné à bloquer toutes les lignes contenant la chaîne "@ 7.7.7.7" dans n'importe quelle partie des données entrantes. Pour cela l'expression rationnelle suivante a été utilisée:La correspondance de modèle LUA ne fonctionne pas comme prévu
local reg = regex.new("555d%|@7\.7\.7\.7\\b\|abc.com")
Bien que cela ne bloque @ 7.7.7.7, il bloque aussi @ 757.787.84.91 Je fait des recherches sur le langage de programmation Lua et il a montré que% (et non) est le caractère d'échappement pour le personnage magique. (point) Par conséquent, dans le modèle "555d% | @ 7.7.7.7 \ b |", \ n'a aucun effet et. est pris pour correspondre à n'importe quel personnage. Cependant étrangement, quand je remplace \ par%, il ne bloque pas une ligne contenant "@ 7.7.7.7". Le nouveau modèle est la suivante:
local reg = regex.new("555d%|@7%.7%.7%.7\\b|")
Quelqu'un pourrait-il me aider à savoir ce qui pourrait être la raison?
Quelle bibliothèque utilisez-vous? Si vous voulez utiliser les patterns Lua, '@ 7.7.7.7' peut être associé à' @ 7% .7% .7% .7% f [% D] '. Si c'est [Iceberg avec * Oniguruma * regex] (https://github.com/yuin/iceberg/blob/master/src/ib_regex.h), vous avez besoin de "555d% \\ | @ 7 \\. 7 \\. 7 \\. 7 \\ | "' (si '|' sont des symboles littéraux). –
Merci d'avoir répondu. En fait ce sont des scripts pré-écrits et c'est mon premier pinceau avec Lua. Par conséquent, je ne suis pas sûr de savoir quelle bibliothèque est utilisée bien que je pense qu'elle soit basée sur PCRE. – vchandra
Quelle est votre réelle contribution? Je veux dire, quelle est la chaîne littérale exacte dont vous avez besoin pour * correspondre *? Notez que '[[]]]' dans Lua sont comme les littéraux de chaînes brutes dans Python, le '' \ '' n'est pas traité comme un char de séquence d'échappement. Est-ce que la réponse de moteus fonctionne pour vous? Alors acceptez-le. –