Esiste un modo semplice per abbinare tutti i segni di punteggiatura ad eccezione di punto e sottolineatura, in una regex C#? Sperando di farlo senza enumerare ogni singolo segno di punteggiatura.Regex: corrisponde a qualsiasi carattere di punteggiatura tranne. e _
risposta
Usa Regex Sottrazione
[\p{P}-[._]]
Ecco il collegamento per documentazione di .NET Regex (non sono sicuro se altri sapori supportano) ... http://msdn.microsoft.com/en-us/library/ms994330.aspx
Ecco un esempio C#
string pattern = @"[\p{P}\p{S}-[._]]"; // added \p{S} to get ^,~ and ` (among others)
string test = @"_""'a:;%^&*~`[email protected]#.,?";
MatchCollection mx = Regex.Matches(test, pattern);
foreach (Match m in mx)
{
Console.WriteLine("{0}: {1} {2}", m.Value, m.Index, m.Length);
}
Spiegazione Il modello è una sottrazione classe di caratteri. Inizia con una classe di caratteri standard come [\ p {P}] e poi aggiunge una classe di caratteri di sottrazione come - [._] che dice di rimuovere il. e _. La sottrazione viene posizionata all'interno di [] dopo l'intestazione della classe standard.
Si potrebbe utilizzare una classe di caratteri negata in questo modo:
[^0-9A-Za-z._\s]
Questo include tutti i caratteri ad eccezione quelli elencati. Potrebbe essere necessario escludere più caratteri (come i caratteri di controllo), a seconda dei tuoi requisiti finali.
che otterrebbe spazi troppo –
va bene, aggiungere spazio all'elenco di esclusione. –
Va bene, ma voglio la metà del vostro rappresentante per questa domanda ... –
Ecco qualcosa di un po 'più semplice. Non parole o spazi bianchi (dove le parole includono A-Za-z0-9 AND underscore).
[^\w\s.]
Funziona anche in Ruby! – zanbri
Le risposte finora non rispettano TUTTA la punteggiatura. Questo dovrebbe funzionare:
(?![\._])\p{P}
(Spiegazione: lookahead negativo per garantire che né .
né _
sono abbinati, quindi qualsiasi carattere Unicode punteggiatura.)
Sembra che non corrisponda a ^, ~ o '; potrei testarlo male o .NET non li considera come segni di punteggiatura? – Smashery
@Smashery Questi sono accenti, non li useresti mai come punteggiatura in inglese. – steinar
Grazie mille! Ho deciso di accettare la risposta di Les, perché trovo che Regex Subtraction sia più facile da capire concettualmente; quindi sono più propenso a ricordarlo; ma +1 - grazie per avermi insegnato alcune cose nuove!(Vorrei poter accettare due risposte) – Smashery
- 1. NSPredicate corrisponde a qualsiasi carattere
- 2. Mockito: corrisponde a qualsiasi stringa tranne uno
- 3. Regexp: qualsiasi carattere tranne sequenza
- 4. Quale regex corrisponde a ogni carattere tranne la virgola "," o il punto e virgola ";"?
- 5. .htaccess rewrite regex: corrisponde a tutto tranne "index"
- 6. RegEx: corrisponde a qualsiasi carattere non composto da parole e caratteri non numerici eccetto
- 7. punteggiatura Regex in Java
- 8. C# Regex corrisponde a qualsiasi cosa all'interno di Parentheses
- 9. RegEx in testo sublime: corrisponde a qualsiasi carattere, incluse le nuove righe?
- 10. Regex che corrisponde a qualsiasi espressione regolare valida
- 11. Regex - corrisponde a qualsiasi stringa eccetto la stringa specifica
- 12. Elixir sostituzione punteggiatura regex
- 13. Forte password di espressione regolare che corrisponde a qualsiasi carattere speciale
- 14. Regex: corrisponde all'indirizzo IP tranne quando preceduto da determinati caratteri?
- 15. Come consentire qualsiasi carattere in RegEx?
- 16. Regex per adattarsi a qualsiasi carattere incluse le nuove righe
- 17. Espressione regolare Java, corrisponde a tutto tranne
- 18. Rimuovi tutta la punteggiatura tranne gli apostrofi in R
- 19. Regex che corrisponde a qualsiasi cosa eccetto per tutti gli spazi bianchi
- 20. Uso di espressioni regolari per corrispondere a qualsiasi carattere eccetto =
- 21. punteggiatura di strip con regex - python
- 22. Regex corrisponde solo a esso e relativo, ma non è
- 23. regex - corrisponde al carattere che non è sfuggito
- 24. Regex - Corrisponde a qualsiasi sequenza di caratteri ad eccezione di una determinata parola in un URL
- 25. L'espressione regolare di Java corrisponde a tutti i caratteri tranne
- 26. Come verificare se una stringa corrisponde a una qualsiasi serie di regex in node.js?
- 27. Espressione regolare - Trova qualsiasi carattere tranne +, la stringa vuota deve anche corrispondere
- 28. Looping attraverso python regex corrisponde a
- 29. Regex: corrisponde a tutte le occorrenze?
- 30. Stampa RegEx corrisponde a SED in bash
Sembra che non corrisponda a ^, ~ o '; potrei testarlo male o .NET non li considera come segni di punteggiatura? – Smashery
Se si rilascia il - [._], quindi \ p {P} non corrisponde nemmeno a loro. – Les
Quindi .NET non li considera punteggiatura? – Smashery