4

特定の文字列から先頭の「The」または「A」または「An」と「スペース」を削除するには、RegEx を 1 つ作成する必要があります。

たとえば、指定された文字列は次のとおりです。

素早い茶色のキツネが怠け者の犬を飛び越える

正規表現を使用すると、先頭の「The」を削除して返すだけです

素早い茶色のキツネが怠惰な犬を飛び越えます

やってみた(コメントから追加)

^*(?<=[The|An|A]\s){1}.*

正常に動作していますが、あるシナリオでは期待される結果が返されません。以下のシナリオを参照してください。

入力: 速い茶色のキツネ --> 結果 = 速い茶色のキツネ

入力: 素早い茶色のキツネ --> 結果 = 素早い茶色のキツネ

入力: 晴れた日に --> 結果 = 晴れた日 (文字列が A で始まっていないため、晴れた日に期待されます)

入力: American An bank --> 結果 = An bank (文字列が An で始まっていないため、American An bank と予想されます)

4

2 に答える 2

9

自分で何を試しましたか?あなたが達成したいことは難しいことではありません。たとえば、Regular-Expressions.info のこのチュートリアルを試してみてください。

あなたは多くのことを複雑に考えています。これを試して:

^(The|An|A)\s+

空の文字列に置き換えます。

ここでRegexrを参照してください

^文字列の先頭に一致します。

(The|An|A)代替は、最初に適合する代替と一致します。

\s+少なくとも 1 つの後続の空白に一致します。

変更点

速い茶色のキツネ

素早い茶色のキツネ

晴れた日に

アメリカの安銀行

クイックブラウンフォックス

クイックブラウンフォックス

晴れた日に

アメリカの安銀行

于 2013-01-24T06:59:13.710 に答える
0

以下は、perl の完全な 1 行です。

perl -e 'my $a = "The quick brown fox jumps over the lazy dog"; $a =~ s/^\s*(?:The|An|A)\s+//gi; print $a;'

置換を行う部分は次のとおりです。

$a =~ s/^\s*(?:The|An|A)\s+//gi;

単語とスペースに一致する正規表現は/^\s*(?:The|An|A)\s+/

于 2013-01-24T06:58:13.240 に答える