2016-06-01 14 views
0

Ich versuche nach dem Vorkommen eines Wortes zu suchen beginnt mit '@', Sagen @steve. Aber ich habe keinen Erfolg.Regulärer Ausdruck, um das Auftreten eines Wortes zu prüfen, das mit dem Zeichen '@' in Java beginnt

Was ich versucht habe, so weit ist diese "\ b @ steve \ b." aber \ b Matches nur Worte, die mit beginnt [a-zA-Z0-9_].

Wenn die Frage zu breit ist oder jemand muss ein Code-Beispiel lassen Sie es mich wissen, ich

Jede Hilfe ist willkommen schreiben werde.

Dank

+0

erklären * Was ich bisher versucht, ist dies "\ b @ steve \ b." aber \ b stimmt nur Wörter ab, die mit [a-zA-Z0-9 _] beginnen. * –

+2

Warum nicht 'String # startsWith()'? Sie sollten die genaue Eingabe und die erwartete Ausgabe anzeigen – TheLostMind

+0

können Sie auch die Eingabezeichenfolge/Datei, wo Sie suchen? – SilentMonk

Antwort

4

Sie sind richtig, ein \b kein Wort-Grenze testen dort, weil @ isn finden 't ein Wort Charakter. Sie könnten einen Blick hinter verwenden:

(?<!\\w)@\\w+ 

Hinweis in der obigen regex, ist die Endung \b unnötig, weil die quantifier dass:

(?<!\\w)@steve\\b 

Regex101 Example

Ein allgemeiner Fall regex einfach wäre wird sowieso bis zum Ende des Wortes gehen.

+0

Danke bro :) Es funktioniert :) – ImGenie

+0

Funktioniert nicht, wenn der Text mit dem '@' beginnt. Verwenden Sie '(? <=^| \\ W) @ \\ w +', d. H. '@' Zeichen am Anfang der Eingabe oder mit vorangestelltem Nicht-Wort-Zeichen, gefolgt von einem oder mehreren Wortzeichen. – Andreas

+1

@Andreas Das ist eigentlich die Antwort, die ich anfangs hatte, aber es funktioniert ohne diese Prüfung, denn wenn es der Anfang der Zeichenfolge ist, dann wird das vorherige Zeichen definitiv kein Wort-Zeichen sein, und so wird es immer noch übereinstimmen. – 4castle

0

Versuchen Sie, diese Regex:

@\b\w+\b

Sie reguläre Ausdrücke here

+0

Es kann auch '@ \ w + \ b' sein, weil es dort garantiert eine Wortgrenze ist. Ich denke jedoch, dass sie versuchen, zu bestätigen, dass der Charakter vorher kein Wortzeichen ist. – 4castle

+0

@ 4castle, wahr. Ich habe nach dem Eingabe-String vom OP gefragt. Ich werde es basierend auf der Antwort ändern. Vielen Dank! – SilentMonk

1

Ich denke, das ist, was Sie suchen.

(?<!\w)@\w+ 

This matches @Steve but doesn't match [email protected] 
0
public static void main(String[] args) 
{ 
    char[] word = "@SomeWord".toCharArray(); 
    if (word[0] == '@') 
    { 
     System.out.println("Starts with @"); 
    } 
    else 
    { 
     System.out.println("Not Starts with @"); 
    } 

} 
+0

Was ist, wenn er eine lange Zeichenfolge hat, die viele @steve enthält? – Raghavendra

+0

@Raghavendra aber die Frage ist nur, um das Startzeichen zu überprüfen. –

+0

@PankajDubey Dieser Regex wird für die Suche verwendet, nicht für die Validierung, daher ist das Anfangszeichen nicht notwendigerweise das '@'. Die Übereinstimmung könnte irgendwo anders in der Zeichenfolge sein. – 4castle

Verwandte Themen