0

例えば

私は次のような文字列を持っています"12345%67890"

Regexp [^%]*私に与えます12345

not を使用する必要がある場合、同じ結果を得る方法です"%""<%"、たとえば。
どうもありがとう。

もう少し情報: 私は巨大なテキストを持っています。ここでは、 と を使用して別のものに変更するなど、 の間にいくつかの置換を行いますが、%%%がセパレーターのように使用されていない場合、すべてがクラッシュします。例:のように、% をより複雑なものに変更することにしました。%test%preg_match_allpreg_replace%test 90% test%<% test 90% test %>

4

2 に答える 2

3

あなたの新しい情報に基づいて、出力を制御しているように聞こえますが、これはすべての種類を奇妙にします.

いずれにしても、作成したラッパーの内容を取得する正規表現は次のとおりです。

<%(.+?)%>

?遅延マッチの に注意してください。

コードサンプル:

$string = "asdfar <%test123%>farasr%<5 sara><%90% is cool%%><%ooooaaaah%>>>%<%>%%";
preg_match_all('/<%(.+?)%>/', $string, $matches);
var_dump($matches);

出力:

array(2) {
  [0]=>
  array(3) {
    [0]=>
    string(11) "<%test123%>"
    [1]=>
    string(16) "<%90% is cool%%>"
    [2]=>
    string(13) "<%ooooaaaah%>"
  }
  [1]=>
  array(3) {
    [0]=>
    string(7) "test123"
    [1]=>
    string(12) "90% is cool%"
    [2]=>
    string(9) "ooooaaaah"
  }
}
于 2013-06-04T10:26:02.067 に答える
0

マッチではなくスプリットを行うべきだと私には思えます:

$subject = "12345<%67890";
$result = preg_split('/<%/', $subject);
print_r($result);

出力:

Array
(
    [0] => 12345
    [1] => 67890
)
于 2013-06-04T11:06:52.997 に答える