アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のような文字列について、

[テスト - 管理 #12345] (終了) 試験結果報告

12345の部分が任意の1桁以上の数字で、それ以外の部分が一致するものを
Regex.IsMatchにて正規表現でチェックしたいと思っています。

(例、以下になるようにしたい)
[テスト - 管理 #1] (終了) 試験結果報告   →True
[テスト - 管理 #123] (終了) 試験結果報告  →True
[テスト - 管理 #123 ] (終了) 試験結果報告  →False
[テスト - 管理 #12a45] (終了) 試験結果報告 →False

正規表現を
[テスト - 管理 #[0-9]+] (終了) 試験結果報告

[テスト - 管理 #[0-9]+\] (終了) 試験結果報告
などとしてやってみたのですが、
うまくヒットせず、ただの文字として[]を含む場合の正規表現の書き方が
よく分かりません。

詳しい方、教えていただけないでしょうか。
以上、よろしくお願い致します。

A 回答 (4件)

こんばんは



完全一致なら更に^$を加えて
 ^\[テスト - 管理 #[0-9]+\] \(終了\) 試験結果報告$
とか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
上記の正規表現を試してみたところ、該当する文字列がTrueで返って来てくれました!
()もエスケープがいるのですね。
助かりました、ありがとうございました!

お礼日時:2022/04/12 20:20

No.2です。



正規表現以外なら既に決まっている部分を置換で "" にし、残った箇所を調べるでしょうか。
    • good
    • 0
この回答へのお礼

再びの回答ありがとうございます。
なるほど、そんなチェックの仕方もありますね。勉強になります。
ありがとうございました。

お礼日時:2022/04/12 20:20

>[テスト - 管理 #[0-9]+\] (終了) 試験結果報告



先頭を忘れてませんか?

\[テスト - 管理 #[0-9]+\] (終了) 試験結果報告
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
どこかのサイトで]はエスケープがいるが、[はエスケープ不要との見ましたので、試していませんでした。
ただ、上記の正規表現でやってみてもダメでした。

お礼日時:2022/04/12 20:18

こんばんは。



正規表現でないとダメなのでしょうか?

多少手間ですが、下記の様な手順を踏めば、チェックは可能かと。
LEFT関数で、"[テスト - 管理 #" までをチェック。
RIGHT関数で、"] (終了) 試験結果報告" までをチェック。
LENGTH関数で、文字の長さを確認し、MID関数で数字部分を抜き出し。
その部分を、IsNumericで、数字かをチェックする。

http://note.websmil.com/vb/string/%E6%96%87%E5%A …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
チェックする正規表現をconfigファイルに持たせて、コンパクトな綺麗な作りにしたいと思い質問させていただきました。
正規表現でできない場合は、仰るようなやり方でするしかないなとは思っておりました。

お礼日時:2022/04/12 20:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!