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

回答編集履歴

3

Javascriptのコードに変更

2021/09/05 04:38

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,17 +1,27 @@
1
1
  もし、「山梨」と「梨県」に対しても置換を行なうのであれば、`(?<!山)梨|梨(?!県)`とします。いっぽう、「山梨」と「梨県」を置換対象から除外するのであれば、(他の回答者の回答にあるように)`(?<!山)梨(?!県)`とします。
2
2
 
3
- ```Python
3
+ 以下、元はPythonのコードをJavascriptに変更し、動的に生成される文字列AとBに対応。
4
- import re
5
4
 
5
+ ```Javascript
6
- target = "梨ね。特に山梨県の梨はみずみずしくて美味い。山梨の梨は梨の王様や!! (梨県さん)"
6
+ let target = "梨ね。特に山梨県の梨はみずみずしくて美味い。山梨の梨は梨の王様や!! (梨県さん)";
7
- pat1 = re.compile(r'(?<!)|(?!)')
7
+ //let target = '山梨県 山 梨梨梨梨\n梨';
8
+ let src = "梨";
9
+ let dst = "りんご";
8
- pat2 = re.compile(r'(?<!)(?!)')
10
+ let exc = "山梨県";
9
11
 
10
- result1 = pat1.sub('りんご', target)
12
+ let pre = exc.substr(0, exc.indexOf(src));
11
- print(result1)
13
+ let post = exc.substr(exc.indexOf(src) + src.length);
12
14
 
15
+ // let pat1 = /(?<!山)梨|梨(?!県)/g;
16
+ let pat1 = new RegExp("(?<!" + pre + ")" + src + "|" + src + "(?!" + post + ")", "g");
17
+ // let pat2 = /(?<!山)梨(?!県)/g;
18
+ let pat2 = new RegExp("(?<!" + pre + ")" + src + "(?!" + post + ")", "g");
19
+
20
+ result1 = target.replace(pat1, dst);
21
+ console.log(result1);
22
+
13
- result2 = pat2.sub('りんご', target)
23
+ result2 = target.replace(pat2, dst);
14
- print(result2)
24
+ console.log(result2);
15
25
  ```
16
26
 
17
27
  ```result

2

表現を修正

2021/09/05 04:38

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,4 +1,4 @@
1
- もし、「山梨」「梨県」に対して置換を行なうのであれば、`(?<!山)梨|梨(?!県)`とします。いっぽう、「山梨」と「梨県」置換から除外するのであれば、(他の回答者の回答にあるように)`(?<!山)梨(?!県)`とします。
1
+ もし、「山梨」「梨県」に対して置換を行なうのであれば、`(?<!山)梨|梨(?!県)`とします。いっぽう、「山梨」と「梨県」置換対象から除外するのであれば、(他の回答者の回答にあるように)`(?<!山)梨(?!県)`とします。
2
2
 
3
3
  ```Python
4
4
  import re

1

補足を追加

2021/09/05 01:31

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,4 +1,4 @@
1
- もし、「山梨」や「梨県」に対しては置換を行なうのであれば、`(?<!山)梨|梨(?!県)`とします。
1
+ もし、「山梨」や「梨県」に対しては置換を行なうのであれば、`(?<!山)梨|梨(?!県)`とします。いっぽう、「山梨」と「梨県」も置換から除外するのであれば、(他の回答者の回答にあるように)`(?<!山)梨(?!県)`とします。
2
2
 
3
3
  ```Python
4
4
  import re