Je définis l'ensemble de regex dans le fichier XML, puis je vais les lire à partir du fichier XML pour les faire correspondre avec la chaîne. Maintenant, le problème est que si je veux les définir dans un fichier XML, alors il devrait y avoir un caractère spécial qui les distingue. Mais ce caractère ne doit pas être utilisé dans la regex comme si j'utilise $ pour distinguer un ensemble de regex alors il y aura un problème quand $ sera utilisé dans regex qui sera défini dans xml. Alors, quel est le caractère qui peut être utilisé pour distinguer les expressions régulières définies dans le fichier xml et non utilisées dans regex?Caractère qui peut être utilisé pour distinguer ensemble de regex et ce caractère ne doit pas être utilisé dans regex
Répondre
Je ne sais pas ce que vous entendez par un caractère spécial - mais si la question est y compris les expressions regex dans XML, vous devez utiliser la balise de section de données de caractères, <![CDATA[My unparsed data goes here.]]>
:
<regexes> <regex><![CDATA[/^\w+$/]]></regex> <regex><![CDATA[/^\d+/]]></regex> <regex><![CDATA[/^\[a-zA-Z]\@example\.com$/]]></regex> </regexes>
Dans vos cordes regex simplement remplacer tous les espaces (' '
) avec une représentation unicode équivalente ('\u0020
'), puis rejoignez-les avec un espace régulier.
irb(main):001:0> regexps = [/^a b/, /end$/, /[ ]+/]
=> [/^a b/, /end$/, /[ ]+/]
irb(main):002:0> attr = regexps.map{|r| r.source.gsub(' ', '\u0020')}.join(' ')
=> "^a\\u0020b end$ [\\u0020]+"
irb(main):006:0> regexps = attr.split(' ').map{|s| Regexp.new(s)}
=> [/^a\u0020b/, /end$/, /[\u0020]+/]
irb(main):008:0> regexps[0] =~ 'a bdbbb'
=> 0
Vous allez en rond en essayant de trouver un caractère. Les expressions régulières ont déjà résolu ce problème: Le premier caractère est le délimiteur, qui doit également terminer l'expression. Si ce délimiteur doit être utilisé littéralement dans l'expression, il doit être échappé.
/foo/
^ ^
delimiter
/foo\/bar/
^
escaped literal '/' character
va de même pour XML: Les <
, >
et &
caractères ont une signification particulière, si vous voulez les utiliser dans le cadre du contenu, vous devez les échapper en utilisant >
, <
et &
. Alternativement, vous pouvez envelopper une section dans <![CDATA[ ]]>
, mais vous ne pouvez pas utiliser la séquence ]]>
à l'intérieur de ceux qui ne s'échappent pas (vous voyez, ça tourne en rond).
En tant que tel, vous aurez besoin d'échapper à l'expression delimiter et entités XML dans vos expressions:
<regex>/foo&\/bar>baz</</regex> (to match 'foo&/bar<baz>')
<regex><![CDATA[/foo&\/bar<baz>/]]></regex> (alternative)
- 1. ... ne peut pas être utilisé dans ce contexte ... tout sérialisation
- 2. Pourquoi un caractère numérique ne peut-il pas être utilisé comme nom de répertoire? (Java)
- 3. ce qui peut être la regex pour la chaîne suivante
- 4. DomainDataSource et ViewModel, peut-il être utilisé ensemble?
- 5. Lequel des caractères Unicode suivants doit être utilisé en HTML?
- 6. App.xaml style ne peut pas être utilisé dans Usercontrol, pourquoi?
- 7. géomarquage en XML ne peut pas être utilisé dans C#
- 8. Est-ce que PHP_EOL doit être utilisé dans les emails?
- 9. Quand est-ce que CanFreeze doit être utilisé?
- 10. Caractère accentué regex
- 11. Regex pour alphanumérique et le caractère +
- 12. Interlocked.Exchange ne peut pas être utilisé avec des génériques?
- 13. ne peut pas être supprimé utilisé par un autre processus
- 14. regex aucun caractère
- 15. Ordonné ManyToManyField qui peut être utilisé dans fieldsets
- 16. $ 1 ne produisant aucun caractère dans regex
- 17. service de traduction qui peut être utilisé d'une application ASP.NET
- 18. regex: caractère de recherche toujours pas parfait
- 19. C# SelectSingleNode - Peut-il être utilisé récursivement?
- 20. regex caractère unicode dans vim
- 21. Comment * tag peut être utilisé en CSS?
- 22. regex pour identifier une balise d'ancrage qui ne doit pas être imbriquée
- 23. Est-ce que cela peut être fait dans une regex?
- 24. Pourquoi ce type.type ne peut-il pas être utilisé pour les nouvelles instances?
- 25. Peut-SqlMembershipProvider être utilisé avec Umbraco
- 26. MEF doit-il être utilisé dans une application de production?
- 27. peut être utilisé pour communiquer mobile et pc?
- 28. PHP regex, espace ou aucun caractère
- 29. Est-ce que RowSets peut être utilisé avec PreparedStatements?
- 30. Est-ce que ASP.NET outputCacheProfiles peut être utilisé avec Response.Cache?