申し訳ありませんが、これはおそらく簡単です。しかし、各行に区切り文字があり、各行の区切り文字の前にあるすべてのテキストを探したい場合は、どのような正規表現を使用しますか?区切り文字が重要かどうかわかりませんが、区切り文字は%文字です。どのようにして、行の最初の文字xまでのすべてのテキストを見つけることができますか?
答えて
あなたのテキストが1
/^(.*?)%/
注グループになります。これは、パーセント記号をすべてをキャプチャします。キャプチャするものを制限したい場合は、 escape sequenceをお選びください。
私が言及したように、正規表現はこの問題では必要ありませんが、少なくともそれは正しいものです:-)。 – Tom
質問に答えるだけで、私は同意します:-)ほとんどの言語では、このような簡単な作業の方がずっと簡単です。 –
...あなたの答えがはっきりと示されています。 –
したくない場合は正規表現を使用する必要はありません。使用している言語によってはsplit()のような文字列関数があります。
$str = "sometext%some_other_text";
$s = explode("%",$str,2);
print $s[0];
これはPHPであり、%で分割され、返された配列の最初の要素を取得します。他の言語でも同様に分割方法で行われます。
これはおそらく大きな問題ではありませんが、 「爆発」は、文字列全体を見る必要があるため、少し不必要です。また、リスト(および余分な文字列オブジェクト)も作成されます。文字列全体を見る必要がないため、部分文字列の概念はより簡単で高速です。 (区切り文字の最初の出現を見つけることは、文字列全体を見る必要はありません)。 – Tom
終わり近くに探している部分文字列はどうなりますか?それも全体の文字列を見ている。 「部分文字列」には2つのステップがあり、1つは索引を、次に2番目は部分文字列を実行することです。どちらの関数も2つの関数を呼び出す必要があります。メモリ(つまり配列)内のアイテムを呼び出すよりも速いですか?あなたが言うことを真実であると私に確信させるために、これらの2つの方法をベンチマークする方法がありますか? :) – ghostdog74
Pythonでは、あなたが使用することができます:Javaでは
def GetStuffBeforeDelimeter(str, delim):
return str[:str.find(delim)]
:Cで
public String getStuffBeforeDelimiter(String str, String delim) {
return str.substring(0, str.indexOf(delim));
}
++(未テスト):あなたがしたいと思うすべての上記の例で
using namespace std;
string GetStuffBeforeDelimiter(const string& str, const string& delim) {
return str.substr(0, str.find(delim));
}
区切り文字を含まない文字列などのコーナーケースを処理します。
基本的には、文字列全体をスキャンするのを避けることができるため、この単純な方法で部分文字列を使用します。正規表現はオーバーキルであり、文字列全体を見ているため、区切り文字上での「分解」や分割も不要です。
もちろん私は読者に練習としてエラー処理を任せていますが、それは考え方です:-)。 – Tom
部分文字列も全体の文字列を正しく見ますか?インデックスを見つけるためにfind()(Pythonで)またはindexOf(javaで)を使用する必要があります。 – ghostdog74
@ ghostdob74:部分文字列は文字列全体を見る必要はありません。部分文字列の部分だけを見ることができます。また、indexOfまたはfindは、delimeterが最初に出現するまでスキャンしてから停止する必要があります。delimeterが最後に来ないか、文字列にない限り、最後までスキャンしません。 – Tom
あなたは正規表現の味を言わないので、私はPerl表記を使用します。通常、それは文字列全体の始まりに過ぎないと一致しますが、この正規表現は複数行モードのおかげで最後に「M」modifierです:
/^[^%]*/m
最初^
[^%]
は反転された
character classで、 '%'を除く任意の1文字に一致します。
*
は、
quantifierであり、前のもの(この場合は
[^%]
)を0回以上マッチさせることを意味します。
- 1. テキストボックステキストの最後の文字はどのようにして見つけることができますか?
- 2. どのような文字の場所に応じて行を見つけることができますか?
- 3. 文字列内のすべての単語の最初の文字をどのように大文字にすることができますか?
- 4. このキューの最大値はどのようにして見つけることができますか?
- 5. どのようにして各単語の最初の文字を見つけるのですか?
- 6. 最近変更された行はどのようにして見つけることができますか?
- 7. どのようにしてレディスキーの最後のアクセス時間を見つけることができますか?
- 8. Djangoでセロリ、どのようにすべてのタスクを見つけることができますか?
- 9. どのようにアプリケーションが色付きの文字を見つけることができますか
- 10. AX2009の最後のラベルIDはどのようにして見つけることができますか?
- 11. どのようにして最大プロセッサキューの長さを見つけることができますか?
- 12. どのようにして最良のファジーストリングマッチを見つけることができますか?
- 13. マングースの値の最初の文字だけを見てすべての文書を見つける方法
- 14. iOSのCoreText Frameworkを使用してUILabelテキスト行の最初の文字位置を見つけよう
- 15. NullPointerExeptionが文字列配列の最初の空のフィールドを見つけようとしています
- 16. どのようにしてR行ごとに共分散を見つけることができますか
- 17. Perlスカラーの最初の5行だけをどのように保つことができますか?
- 18. 文書のローテーションはどのようにして見つけることができますか?
- 19. どのように文字列の配列を見つけることができますか?
- 20. どのようにして2つの日付の違いを見つけることができますか?
- 21. 文字のセットがどのような単語を見つけることができますか?
- 22. どのようにすべてのテキスト見出しをフォーマットできますか
- 23. 文字から言語をどのように見つけることができますか?
- 24. どのようにしてagにnode_modulesでの一致を見つけることができますか?
- 25. どのようにmongoosejsで見つけることができますか?
- 26. xctestでラベルや静的テキストの階層をどのように見つけることができますか?
- 27. 数字で始まるすべての行を見つける
- 28. どのようにしてx文字列とその出現回数をbashで見つけるか?
- 29. Python:文字列の最初の文字を見つけるにはどうすればいいですか?
- 30. Rustの文字列の文字のインデックスはどのようにして見つけることができますか?
テキストに関するその他の基準はありますか、%の前ですべてを取得したいだけですか? –
あなたのプロジェクトはどの言語ですか?正規表現_これは最善の方法ではありません。 – beggs
これは本当に正規表現の問題ではありません。あなたはそれらを使うことはできますが、非常に不必要です。 – Tom