-1

申し訳ありませんが、私の英語はうまくありません。問題があります。正規表現を使用して 2 つの異なる文字列を比較したいのです。最初の文字列はab-1のような構造です。例: mobile-phone-1。2 番目の文字列はab-1/de-2 のような構造を持ちます。例: mobile-phone-1/nokia-asha-23。どうすればいいですか?preg_match() メソッドまたは何かメソッドを使用できます...このメソッドは、2 つの異なる文字列に対して使用できます。本当にありがとう!

コードのデモ:

if (preg_match("reg exp 1", string1)) { // do something }
if (preg_match("reg exp 2", string2)) { // do something }

P/S: コードのデモはあまり気にしないでください

4

3 に答える 3

1

説明付きの正規表現。ステップバイステップで解決します。

$text1='mobile is for you--phone-341/nokia-asha-253'; //sample string 1
$text2='mobile-phone-341'; //sample string 2

  $regular_expression1='(\w)';  // Word             (mobile)
  $regular_expression2='(-)';   // Any Single Character         (-)
  $regular_expression3='(\w)';  // Word             (phone)
  $regular_expression4='(-)';   // Any Single Character         (-)
  $regular_expression5='(\d+)'; // Integer Number           (341)

  $regular_expression6='(\/)';  // Any Single Character         (/)

  $regular_expression7='(\w)';  // Word             (nokia)
  $regular_expression8='(-)';   // Any Single Character         (-)
  $regular_expression9='(\w)';  // Word             (asha)
  $regular_expression10='(-)';  // Any Single Character         (-)
  $regular_expression11='(\d)'; // Integer Number           (253)

  if ($c=preg_match_all ("/".$regular_expression1.$regular_expression2.$regular_expression3.$regular_expression4.$regular_expression5.$regular_expression6.$regular_expression7.$regular_expression8.$regular_expression9.$regular_expression10.$regular_expression11."/is", $text1))
  {
    echo "a-b-1/d-e-2 format string";
  }
  else
  {
    echo "Not in a-b-1/d-e-2";
  }
  echo "<br>------------------------<br>"; //just for separation

 if ($c=preg_match_all ("/".$regular_expression1.$regular_expression2.$regular_expression3.$regular_expression4.$regular_expression5."/is", $text2))
  {
    echo "a-b-1 formate string";
  }
  else
  {
    echo "Not in a-b-1 format";
  }
于 2013-07-11T09:55:45.487 に答える
1
$pattern = '#[\w]+-[\w]+-[\d]+(/[\w]+-[\w]+-[\d]+)?#';
if (preg_match($pattern, $str, $matches)){
    return $matches;
}

短い文字列を一致させるには、次を使用します。

$pattern = '#[\w]+-[\w]+-[\d]+#';

長い方に合わせるには:

$pattern = '#[\w]+-[\w]+-[\d]+/[\w]+-[\w]+-[\d]+#';

より長いものとさらに多くのダッシュを一致させるには:

$pattern = '#[\w]+-[\w]+-[\d]+/[\w-]+[\d]+#';
于 2013-07-11T09:24:44.850 に答える
1
if(preg_match("/^([a-z]+)-([a-z]+)-([0-9]+)$/i",$string1))

if(preg_match("/^([a-z]+)-([a-z]+)-([0-9]+)\/([a-z]+)-([a-z]+)-([0-9]+)$/i",$string2))

末尾の 'i' は、大文字と小文字を区別するためのものです。

于 2013-07-11T09:50:34.967 に答える