単純な正規表現である必要があることを実行しようとしています。ここで実行したいのは、単語の末尾にsが付いているかどうかに関係なく、単語の単数部分を一致させることだけです。だから私が次の言葉を持っているなら
test
tests
編集:さらなる例、私はこれがそれらの2つだけでなく多くの単語で可能になるようにする必要があります
movie
movies
page
pages
time
times
それらすべてについて、末尾にsがない単語を取得する必要がありますが、末尾にsがない最初のビットを常に取得し、両方の場合に機能する正規表現を見つけることができません。
私は次のことを試しました:
([a-zA-Z]+)([s\b]{0,}) - This returns the full word as the first match in both cases
([a-zA-Z]+?)([s\b]{0,}) - This returns 3 different matching groups for both words
([a-zA-Z]+)([s]?) - This returns the full word as the first match in both cases
([a-zA-Z]+)(s\b) - This works for tests but doesn't match test at all
([a-zA-Z]+)(s\b)? - This returns the full word as the first match in both cases
さまざまな正規表現を試すためにhttp://gskinner.com/RegExr/を使用しています。
編集:これは崇高なテキストスニペット用です。崇高なテキストのスニペットを知らない人にとってはショートカットなので、データベースの名前を入力して「スニペットを実行」をクリックすると、何かに変わります。お気に入り:
$movies= $this->ci->db->get_where("movies", "");
if ($movies->num_rows()) {
foreach ($movies->result() AS $movie) {
}
}
必要なのは、「movies」を「movie」に変換し、それをforeachループに自動挿入することだけです。
つまり、テキストを検索して置換することはできず、60〜70語を考慮するだけで済みます(英語のすべての単語ではなく、自分のテーブルに対してのみ実行されます)。
ありがとう!-ティム