質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

1118閲覧

C# 正規表現 任意の長さの文字

YU-N

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2022/06/25 15:54

C#で
Regex.IsMatchメソッドで文字列が想定している形になっているかを調べたいのですが

正規表現の方法がわかりません。

ファイル検索のワイルドカードの*のように「任意の長さの文字」を表現するときはどのようにしたらよいでしょうか?

ワイルドカードの場合の
記述例:
た*

該当例:
たこ
たぬき

今回の用途で意図する文字列:
あいうえ_123
あいうえお_12354

アンダースコアが文字列の間に含まれているかどうかを調べたいです。

ワイルドカードで表現するところの
_
になります。
*に来るところの文字数は不定なので、
\D\D\D_\D\D\D
のようにはしたくありません。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/06/26 00:38 編集

まずは自分で調べましょう https://teratail.com/help/question-tips 調べて xxx を読んだけど分からないということならその事を書きましょう。 聞くならあなたの言う「任意の長さ」の定義を書きましょう (特に 0 回以上の繰り返しなのか 1 回以上の繰り返しなのか)。あと「文字」の定義も (_ の左はひらがな、右は数字というような制約があるならそれを。逆にホントに任意ならその中に _ が含まれているということはないのかなど)。
YU-N

2022/06/26 03:16

zuishin様 質問で要件をお伝えしきっておりませんでした。 「_」(アンダースコア)が含まれるかどうか を調べたいのは事実ですが _あいうえお (アンダースコアで始まるもの) や あいうえお_ (アンダースコアで終わるもの) は取りたくない為 ワイルドカードで言うところの 「*_*」のような形を取りたかったです。 文字数不定の文字列_文字数不定の文字列 のものだけを取りたかったしだいです。
Zuishin

2022/06/26 03:21 編集

ファイル名のワイルドカードは 0 文字以上の文字列ですが、ここで求められているのは 1 文字以上の文字列です。 何かに例えるのは曖昧になるのでやめた方が良いと思います。
YU-N

2022/06/26 03:34

zushin様 すみません。ワイルドカードの*は0文字以上の文字列、なんですね。私の認識の間違いでした。
退会済みユーザー

退会済みユーザー

2022/06/26 03:39

質問者さん> > _あいうえお (アンダースコアで始まるもの) や > あいうえお_ (アンダースコアで終わるもの) は取りたくない為 であれば * はダメで、+ でなければならないはず。人のレスをスルーあなたは BL に入れときます。
退会済みユーザー

退会済みユーザー

2022/06/26 03:48

String.IndexOf の戻り値が 1 以上か否かで判断すればで良いのでは? きちんと条件が書けないのに正規表現をつかうなんてことがおこがましいかも。
YU-N

2022/06/26 03:53

なるほど。そういう考え方もあるのですね。 私の質問が、不明確で稚拙であったことは認めますが 「おこがましい」とは失礼なものいいですね。マナーの無い人ですね。
退会済みユーザー

退会済みユーザー

2022/06/26 04:02

人のレスをスルー・無視する人にマナー云々を言う資格はない
kikukiku

2022/06/27 00:34

SurferOnWww様 下記に該当すると思いました。通報させて頂きます。 利用規約7条(5)他人に不快感を与える表現を含む情報
退会済みユーザー

退会済みユーザー

2022/06/27 03:28

お気に召さないなら「おこがましい」を「片腹痛い」とか「十年早い」とか「分不相応」に書き換えてあげましょうか? 
guest

回答1

0

ファイル検索のワイルドカードの*のように「任意の長さの文字」を表現するときはどのようにしたらよいでしょうか?

.*です。
こんな質問文を書くより、その時間で正規表現の入門サイトを見たほうが有益ですよ。


その後のやりとりで質問者から以下の要望が追記されました。

「_」(アンダースコア)が含まれるかどうか
を調べたいのは事実ですが

あいうえお (アンダースコアで始まるもの) や
あいうえお
 (アンダースコアで終わるもの) は取りたくない

「1文字以上の任意の長さの文字列」を示す正規表現は.+であり、上記の要望を満たす正規表現は.+_.+です。

投稿2022/06/25 16:20

編集2022/06/27 00:41
ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/06/26 00:43 編集

質問者さんの言う「任意の長さ」の意味が不明です。さらに疑うと「文字」がホントに任意なのかも分かりません (_ の左はひらがな、右は数字ということなのかも。逆にそういう制約は一切なくて「文字」に _ が含まれていることもあるとか)。
otn

2022/06/26 03:04

> 質問者さんの言う「任意の長さ」の意味が不明です。 「ファイル検索のワイルドカードの*のように」なので、明確かと。
YU-N

2022/06/26 03:12

otn様のおっしゃる通り、「任意の長さ」です。 文字数が不定ということです。
Zuishin

2022/06/26 03:20

任意の長さではなく、1 以上の任意の長さのようです。 ファイル検索のワイルドカードとは異なっています。
YU-N

2022/06/26 03:23

ku__ra__ge様 回答ありがとうございます。 おっしゃることはわかります。私もとても簡単なことを質問している自覚があります。 teratailのコンセプトに基づき、30分程度は自分で調べていますが、わからず、拙いと思いながらも質問させて頂いた次第です。 googleで「C# 正規表現」の検索でヒットする上位2サイトですが https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions https://dobon.net/vb/dotnet/string/regex.html 事前の知識なく、いずれも回答いただいた「.*」に至る情報が無いように見受けられます。 (発想がわかれば簡単に至るわけですが) 「.」ピリオドは 改行文字(\n)以外の任意の一文字 「*」アスタリスクは 直前の文字が0回以上繰り返す。 これを組み合わせて 任意の文字列が0回以上繰り返されていれば = ワイルドカードで言う 「*」ですね。 組み合わせれば良いのですね。思い至らず失礼しました。 参考になりました。ありがとうございました。
退会済みユーザー

退会済みユーザー

2022/06/26 04:12 編集

otn さん> > 「ファイル検索のワイルドカードの*のように」なので、明確かと。 いえ、明確ではありません。そんな正規表現とは関係ないもので例えられても意味がありません。 量指定子 https://docs.microsoft.com/ja-jp/previous-versions/dotnet/articles/ms972966(v=msdn.10)?redirectedfrom=MSDN#quantifiers 量指定子は、特定の文字または一連の文字が繰り返し許可される回数をパターン内で指定する簡単な方法を提供します。 明示的でない量指定子は 3 つあります。 *、"0 回以上の出現"を表します。 +、"1 つ以上の出現回数" を表し、〘〘⾳⾳ ?、"0 または 1 の発生" を表します。
退会済みユーザー

退会済みユーザー

2022/06/26 03:38

質問者さん> > _あいうえお (アンダースコアで始まるもの) や > あいうえお_ (アンダースコアで終わるもの) は取りたくない為 であれば * はダメで、+ でなければならないはず。人のレスをスルーあなたは BL に入れときます。
YU-N

2022/06/26 03:38

すみません。私がワイルドカードの「*」の意味を正しく理解していなかったために質問に問題がありました。
退会済みユーザー

退会済みユーザー

2022/06/26 03:40

結果的にですが間違っているので低評価します。
Zuishin

2022/06/26 03:41

> 事前の知識なく、いずれも回答いただいた「.*」に至る情報が無いように見受けられます。 だから検索ではなく入門サイトと言われているわけで、知識なく質問すると、このように意図と異なっている回答にベストアンサーをつけてしまいます。
YU-N

2022/06/26 03:50

ベストアンサー外しました。 元々私の質問の意図が不明確だったのが原因なので、 ku__ra__ge様の回答時点での回答内容は、質問の意図を汲み取って頂けておりました。 「.+_.+」が今回の質問に対する解ですね。同じ悩みに至った方の為に、コメントしておきます。
ku__ra__ge

2022/06/26 04:59 編集

正しい回答を自己回答として投稿し、それにベストアンサーを付けて質問を終了させてください。 それはそうと、回答後に追記された情報をもとにマイナス評価を食らうのは理不尽すぎる……。(単なる愚痴なのでこのコメントには突っ込まないでくださいね)
退会済みユーザー

退会済みユーザー

2022/06/26 04:35

> 回答後に追記された情報をもとにマイナス評価を食らうのは理不尽すぎる……。 最初のコメントで、 > 質問者さんの言う「任意の長さ」の意味が不明です。さらに疑うと「文字」がホントに任意なのかも分かりません (_ の左はひらがな、右は数字ということなのかも。逆にそういう制約は一切なくて「文字」に _ が含まれていることもあるとか)。 と書きました。回答する前にそれを聞くべきだと思いますし、でなくてもそれを見て対応されていれば方向修正はできたと思うのですが?
Zuishin

2022/06/26 07:34

とりあえず回答直しませんか? このままじゃベストアンサーもつけられないし、低評価も外せないでしょう。 今更他の人が回答もできないでしょうし。
Zuishin

2022/06/26 07:37 編集

私の回答なんて、正しくても低評価が山ほどつくので、それに比べたらこのくらい理不尽には入りませんよ。 質問の回答として正解でないものに高評価が入っていたら、それを 0 に戻すのは当然とも言えます。
退会済みユーザー

退会済みユーザー

2022/06/27 03:21

回答を直していただけたので例評価は外しました。 ただ、依然として「任意の長さの文字」の「文字」が何だか不明ではありますが。(_ の左はひらがな、右は数字というような制約があるとか。逆にホントに任意ならその中に _ が含まれているということもあるとか)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問