【正規表現】行頭ではなく、開きカッコのない、閉じカッコだけがある数字の連続」にマッチする正規表現を教えて下さい

以下のような例文があるとき、
・「行頭ではなく、開きカッコのない、閉じカッコだけがある数字の連続」にマッチする正規表現を教えて下さい。
・数字は半角、カッコ類は全角に統一してあるものとします。

【例文】
------------------------------------
(1)これは例文です。
2)それも例文であります10)。
例文11)その3です。
------------------------------------
この例だと、
10)
11)
だけにマッチするようにしたいです。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2021/09/28 21:25:36

ベストアンサー

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

正規表現と言っても、実装する言語というかライブラリによって差異があるので、一概にこうとは言えません。

希望している内容を素直に書けるのは、「否定後読み」を持っているタイプです。


「否定後読み」を使うと、こんな感じになります。

(?<!|^)[1-9][0-9]*

全角のかっこが分かりにくいので、赤くしてます。

数字は、項番のような気がするので、「ゼロで始まらないもの」と解釈してます。


例えば、javascript だと、こんな感じになります。

(_ => {
    const RE = /(?<!(|^)[1-9][0-9]*)/;
    [
        "(1)これは例文です。",
        "2)それも例文であります10)。",
        "例文11)その3です。",
    ].forEach(s => {
        const m = RE.exec(s);
        console.log(m);
    });
})();

結果は、こう。

null                    // (1)にはヒットしない
Array [ "10)" ]        // 行頭の 2)にはヒットしない
Array [ "11)" ]
id:salon_hiyake

ありがとうございます! 求めていたのはこれです!

2021/09/28 21:25:15

その他の回答1件)

id:deep_one No.1

回答回数153ベストアンサー獲得回数15

[^(][0-9]+)

とかになると思うが「前の文字」にも条件があるのでヒットする範囲は必然的に「前の文字」を含んでしまうのではないか。

なお試しに書いてみて全然ヒットしないと思ったら例文の括弧が全角だった。(半角括弧だとエスケープが必要なことがあるので注意。)

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

正規表現と言っても、実装する言語というかライブラリによって差異があるので、一概にこうとは言えません。

希望している内容を素直に書けるのは、「否定後読み」を持っているタイプです。


「否定後読み」を使うと、こんな感じになります。

(?<!|^)[1-9][0-9]*

全角のかっこが分かりにくいので、赤くしてます。

数字は、項番のような気がするので、「ゼロで始まらないもの」と解釈してます。


例えば、javascript だと、こんな感じになります。

(_ => {
    const RE = /(?<!(|^)[1-9][0-9]*)/;
    [
        "(1)これは例文です。",
        "2)それも例文であります10)。",
        "例文11)その3です。",
    ].forEach(s => {
        const m = RE.exec(s);
        console.log(m);
    });
})();

結果は、こう。

null                    // (1)にはヒットしない
Array [ "10)" ]        // 行頭の 2)にはヒットしない
Array [ "11)" ]
id:salon_hiyake

ありがとうございます! 求めていたのはこれです!

2021/09/28 21:25:15

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません