質問するログイン新規登録
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

1026閲覧

正規表現を使用して、目的とする文字列のみを変数内から取得したい

milkwalking

総合スコア60

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2019/06/04 03:55

編集2019/06/04 05:11

0

1

前提・実現したいこと

変数にはいっている【氏名】の後の名前だけを抽出したいです。

C#

1 string name = 【氏名】山田太郎 2 Match matche = Regex.Match(name,"正規表現");

今までは aから始まる とか
数字14文字を とか
そういったルールでは抽出してきたんですが、、
~以降の文字などは正規表現では何を使用すればいいのでしょうか。

補足情報(FW/ツールのバージョンなど)

言語はC#
Windows Formを使用してアプリを作成中です
SQLサーバー
Microsoft SQL Server 2014 - 12.0.2269.0 (X64)
Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 17763: )

VisualStudio2017という環境です。

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

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

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

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

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

m.ts10806

2019/06/04 03:57

タイトルが同じでは質問の意味があまりないと思います。 https://teratail.com/questions/192927 なるべく質問内容に寄った、一意のタイトルにしてください。
m.ts10806

2019/06/04 03:58

というか「【氏名】」と決まっているなら置換で空にすれば良いのでは? 大目的が不明です
KojiDoi

2019/06/04 04:20

「こんな感じでしょうか、、、 」、ではなくてそこまでは自分で試してみるべきでしょう。それでうまくいけばいいし、期待と違うなら何が違っていてそして自力では解決できないのかを具体的に書くのが質問というものです。
Orlofsky

2019/06/04 04:33

氏名カラムから取得しているんでしょうけど、SELECT 時に SUBSRING で '【氏名】' を削れば済む。氏名カラムの最初に '【氏名】' って文字列を入れるテーブル設計が敗因では? [SQL Server]タグは追加しましょうね。
milkwalking

2019/06/04 05:10

mts10806さん タイトル修正いたします! 「【氏名】」と決まっているなら置換で空にすれば良いのでは?大目的が不明 →申し訳ございません。この名前の後にも何かユーザーが編集して追加される可能性があったので正規表現でと考えておりました。説明不足でした。 kojiDoi さん 申し訳ございません。一度デバックやリビルドでテストtryしてみます。 Orlofskyさん 氏名カラムから取得しているんでしょうけど、 →ではなくいろんな内容が入っているコメントカラムから引っ張った値の一部です。タグの追加とSQLでのSELECTの時にどうにかできないかも考えてみます
guest

回答3

0

ベストアンサー

惜しいですね。

C#

1string name = "【氏名】山田太郎"; 2Match matche = Regex.Match(name, "(?<=(【氏名】))(.*)(?=$)");

投稿2019/06/04 04:33

hihijiji

総合スコア4152

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

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

milkwalking

2019/06/04 07:33 編集

テスト実行結果では狙ったところを抜き出せていたんです。ありがとうございます。最後の改行の部分への配慮をしておりませんでした。ありがとうございます。
guest

0

refiddle で REGEX OPTIONS を .NET にして確かめてください。

注意点として、ここで試した正規表現は "正規表現" のように "" でくくられたリテラルでは使えません。@"正規表現" のように @"" でくくるか、バックスラッシュをエスケープしてください。

投稿2019/06/04 05:02

Zuishin

総合スコア28675

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

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

0

試したこと

【氏名】の後から文末までだと下記で取得できました。

C#

1         string name = 【氏名】山田太郎 2 Match matche = Regex.Match(name,"(?<=(【氏名】))(.*)$ ");

ちなみに山田より前を抜き出すのは下記で成功しました。

C#

1         string name = 【氏名】山田太郎 2 Match matche = Regex.Match(name,"(.*)(?=山田)");

投稿2019/06/04 05:16

milkwalking

総合スコア60

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問