PHPでpreg_match
という表現を使用して一般的な略語を返してから、それらをフルバージョンの単語( "St."が "Street"になる)に置き換えようとしています。データベース。preg_matchを使用して略語を展開する
これは、略語、完全省略形、オプションの "。"、および文字列または空白の末尾のいずれかに一致する必要があることを意味します(Stationに一致しないようにする)。私は試しました:
preg_match("#\s(S|s)t\.?\s#" , $my_string , $matches)
preg_match("#(\s(S|s)t\.?)+(\s|$)+#" , $my_string , $matches)
preg_match("#(\s{1}(S|s){1}t{1}\.?){1}\s{1}#" , $my_string , $matches)
私は期待していないし、なぜわからない。これは、ケース内の対応するマッチ "聖" を返しarray (" St.", " St." , "S")
:。
第一$試合:array (" St." , "S")
第二:array (" St." , " St." , "S", " ")
第三$my_string = "My St. and something else"
「st。」、「St」、または「st。」に置き換えられます。
これらのケースで一致を1つのインスタンスに限定するにはどうすればよいですか?
機能的には、最初のマッチだけが置換されるため、対応する置換が機能するように見えますが、1つのマッチに絞り込む必要があるように感じられます。
2番目の質問では、上記の2番目のpreg_match()
では、空白または文字列の末尾に(\s|$)
を使用しようとしています。これは受け入れ可能かどうか、どうすればよいでしょうか?
ます。https:// regex101。 – yivi