teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2021/09/05 02:29

投稿

otn
otn

スコア86349

answer CHANGED
@@ -15,4 +15,17 @@
15
15
  `/(?!山梨県)(?:^|(.{1}))梨/g`のような正規表現を生成します。
16
16
 
17
17
  #追記
18
- と思ったけど、`a="山梨県、、、、";x="大山梨県";`の様なケースだと駄目ですね。
18
+ と思ったけど、`a="山梨県、、、、";x="大山梨県";`の様なケースだと駄目ですね。
19
+ ```JavaScript
20
+ let x="山梨県";
21
+ let y="梨";
22
+ let z="りんご";
23
+ let w=x.indexOf(y);
24
+ let r= new RegExp(`(?!${x})(?:^(.{0,${w}})|(.{${w}}))${y}`,"g");
25
+
26
+ console.log(r);
27
+ let b=a.replace(r,`$1$2${z}`);
28
+ console.log(a);
29
+ console.log(b);
30
+ ```
31
+ 質問文にお書きの、一度「山梨県」を別の文字列に置換する方法の方が明快で良いと思います。

2

訂正

2021/09/05 02:29

投稿

otn
otn

スコア86349

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  #追記訂正
4
4
  こんな感じでしょうか。
5
5
  ```JavaScript
6
- let a="梨、山梨県、梨、山梨、梨県、山県";
6
+ let a="梨、山梨県、梨、山梨、梨県、山県";
7
7
  let x="山梨県";
8
8
  let y="梨";
9
9
  let z="りんご";
@@ -12,4 +12,7 @@
12
12
  let b=a.replace(r,`$1${z}`);
13
13
  console.log(b);
14
14
  ```
15
- `/(?!山梨県)(?:^|(.{1}))梨/g`のような正規表現を生成します。
15
+ `/(?!山梨県)(?:^|(.{1}))梨/g`のような正規表現を生成します。
16
+
17
+ #追記
18
+ と思ったけど、`a="山梨県、、、、";x="大山梨県";`の様なケースだと駄目ですね。

1

追記

2021/09/05 02:07

投稿

otn
otn

スコア86349

answer CHANGED
@@ -1,1 +1,15 @@
1
- `/(?!<山)梨(?!県)/`でしょうか。否定先読み、否定後読みです。
1
+ ~~`/(?!<山)梨(?!県)/`でしょうか。否定先読み、否定後読みです。~~
2
+
3
+ #追記訂正
4
+ こんな感じでしょうか。
5
+ ```JavaScript
6
+ let a="梨、山梨県、梨、山梨、梨県、山形県";
7
+ let x="山梨県";
8
+ let y="梨";
9
+ let z="りんご";
10
+ let r=new RegExp(`(?!${x})(?:^|(.{${x.indexOf(y)}}))${y}`,"g");
11
+
12
+ let b=a.replace(r,`$1${z}`);
13
+ console.log(b);
14
+ ```
15
+ `/(?!山梨県)(?:^|(.{1}))梨/g`のような正規表現を生成します。