2016-12-09 1 views
2

Ich habe ein Array von Wörtern ich will alle mit Start-'___' aber einige Wörter auch '___' am Ende am Ende mit übereinstimmen. aber ich möchte nicht, diese WorteSpiel regulärer Ausdrücke beginnen mit, aber nicht mit Zeichen

hier ist meine Wortliste

___apis 
___db_tables 
___groups 
___inbox_messages 
___sent_messages 
___todo 
___users 
___users_groups 
____4underscorestarting 
sinan 
sssssssssss 
test_______dfg 
testttttt 
tet____ 
tttttttttt 
uuuuuuuu 
vvvvvvvvvvvv 
wwwwwwww 
zzzzzzzzzz 

ich nur diese Worte

___apis 
___db_tables 
___groups 
___inbox_messages 
___sent_messages 
___todo 
___users 
___users_groups 

ich möchte nicht, diese Worte passen

übereinstimmen soll passen
tet____ 
test_______dfg 
____4underscorestarting 

so sieht es aus, wenn ich

versuche

enter image description here

Antwort

1
^___[a-z].* 

sollte es für you.See Demo tun.

https://regex101.com/r/hHRg8d/1

+0

@c_minor_team akzeptieren, wenn es für Sie gearbeitet – vks

+0

können Sie auch sagen, mir, wie man es –

+0

gegenüberstellt, werde ich es nach 5 Minuten annehmen. danke nochmal –

2

Die Lösung mit preg_grep Funktion:

// $arr is your initial array of words 
$matched = preg_grep("/^_{3}[^_].*/", $arr); 
print_r($matched); 

Der Ausgang:

Array 
(
    [0] => ___apis 
    [1] => ___db_tables 
    [2] => ___groups 
    [3] => ___inbox_messages 
    [4] => ___sent_messages 
    [5] => ___todo 
    [6] => ___users 
    [7] => ___users_groups 
) 

Update: Um die gegenüberliegenden Streichhölzer verwenden Sie eine der folgenden Möglichkeiten:

  • RegexMuster: /^(?!_{3})\w*/
  • eingestellt das dritte Argument der Funktion als preg_grepPREG_GREP_INVERT (... preg_grep("/^_{3}[^_].*/", $arr, PREG_GREP_INVERT))

http://php.net/manual/en/function.preg-grep.php

+0

@c_minor_team, gern geschehen. Überprüfen Sie auch mein Muster für die entgegengesetzten Übereinstimmungen – RomanPerekhrest

+0

Um das * Gegenteil * zu erhalten, können Sie auch 'preg_grep' dritten Parameter verwenden. –

+1

@CasimiretHippolyte, lass es uns tun. Bearbeitet. Danke für den Hinweis – RomanPerekhrest

0
^_{3}.*[^(_{3})]$ 
  1. Starts (^) mit 3 '_' _ {3}
  2. Kann man etwas in der Mitte enthalten. *
  3. nicht ($) '' in 3 enden [^ ( {3}]
+0

Sie haben nicht gut verstanden, was Charakter Klassen sind. Um eine Idee zu geben, ist das Schreiben von '[^ (_ {3})]' dasselbe wie das Schreiben von '[^) (} {3_]'. –

Verwandte Themen