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

回答編集履歴

1

perl5でのテスト/サンプル実行例を追記

2019/10/22 10:39

投稿

dodox86
dodox86

スコア9418

answer CHANGED
@@ -17,4 +17,41 @@
17
17
  Googleスプレッドシート上での実行結果です。
18
18
  ![Google Spread Sheet](9e2bfb56ba24b3e6d14ecef1c42626b3.png)
19
19
 
20
- もう少し上手いやり方があるかもしれませんので、他の方の回答を待ってみても良いかもしれません。
20
+ もう少し上手いやり方があるかもしれませんので、他の方の回答を待ってみても良いかもしれません。
21
+
22
+ ---
23
+ **追記しました:2019-10-22 19:39**
24
+
25
+ > 文字列について否定の正規表現`(?!re)`が使えれば1つでできると思ったのですが、
26
+
27
+ Googleスプレッドシート上では適いませんでしたが、`(?!re)`が使える別のプログラミング言語なら本当にできるか気になったので、Perl5の以下のコードで確認しました。正規表現としては `^(?!.*XY)^[0-9a-zA-Z,-]+$` になります。他のプログラミング言語でもこれで行けるはずです。
28
+
29
+ ```Perl5
30
+ # perl v5.26.3
31
+ while (<>) {
32
+ if (/^(?!.*XY)^[0-9a-zA-Z,-]+$/) {
33
+ print;
34
+ }
35
+ }
36
+ ```
37
+
38
+ 実行例:
39
+ ```bash
40
+ $ cat data.txt
41
+ AB123456789
42
+ Amazon-123
43
+ XY123456789
44
+ YX123456789
45
+ XX123456789
46
+ YY123456789
47
+ Amazon+123
48
+ Amazon!123
49
+
50
+ $ perl t1.pl data.txt
51
+ AB123456789
52
+ Amazon-123
53
+ YX123456789
54
+ XX123456789
55
+ YY123456789
56
+ ```
57
+ 。。。ご要望を満たせているようです。以上、ご参考まで。