回答編集履歴

3

追記

2021/09/05 02:29

投稿

otn
otn

スコア85901

test CHANGED
@@ -33,3 +33,29 @@
33
33
  #追記
34
34
 
35
35
  と思ったけど、`a="山梨県、、、、";x="大山梨県";`の様なケースだと駄目ですね。
36
+
37
+ ```JavaScript
38
+
39
+ let x="山梨県";
40
+
41
+ let y="梨";
42
+
43
+ let z="りんご";
44
+
45
+ let w=x.indexOf(y);
46
+
47
+ let r= new RegExp(`(?!${x})(?:^(.{0,${w}})|(.{${w}}))${y}`,"g");
48
+
49
+
50
+
51
+ console.log(r);
52
+
53
+ let b=a.replace(r,`$1$2${z}`);
54
+
55
+ console.log(a);
56
+
57
+ console.log(b);
58
+
59
+ ```
60
+
61
+ 質問文にお書きの、一度「山梨県」を別の文字列に置換する方法の方が明快で良いと思います。

2

訂正

2021/09/05 02:29

投稿

otn
otn

スコア85901

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```JavaScript
10
10
 
11
- let a="梨、山梨県、梨、山梨、梨県、山県";
11
+ let a="梨、山梨県、梨、山梨、梨県、山県";
12
12
 
13
13
  let x="山梨県";
14
14
 
@@ -27,3 +27,9 @@
27
27
  ```
28
28
 
29
29
  `/(?!山梨県)(?:^|(.{1}))梨/g`のような正規表現を生成します。
30
+
31
+
32
+
33
+ #追記
34
+
35
+ と思ったけど、`a="山梨県、、、、";x="大山梨県";`の様なケースだと駄目ですね。

1

追記

2021/09/05 02:07

投稿

otn
otn

スコア85901

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