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

回答編集履歴

3

実行例に「/~username/hoge」といパターンを追加した。

2020/11/03 06:23

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -9,6 +9,8 @@
9
9
  ),()
10
10
  $ echo '/~username/' | perl -ne 'if ( m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
11
11
  (username),()
12
+ $ echo '/~username/hoge' | perl -ne 'if ( m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
13
+ (username),(hoge)
12
14
  $ echo '/~username/hoge/hoge' | perl -ne 'if ( m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
13
15
  (username),(hoge/hoge)
14
16
  ```

2

perlワンライナーの冗長な「$_」指定を削除した。

2020/11/03 06:23

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -4,11 +4,11 @@
4
4
  その他の部分の解釈は合っていると思います。
5
5
 
6
6
  ```
7
- $ echo '/~username' | perl -ne 'if ( $_ =~ m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
7
+ $ echo '/~username' | perl -ne 'if ( m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
8
8
  (username
9
9
  ),()
10
- $ echo '/~username/' | perl -ne 'if ( $_ =~ m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
10
+ $ echo '/~username/' | perl -ne 'if ( m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
11
11
  (username),()
12
- $ echo '/~username/hoge/hoge' | perl -ne 'if ( $_ =~ m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
12
+ $ echo '/~username/hoge/hoge' | perl -ne 'if ( m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
13
13
  (username),(hoge/hoge)
14
14
  ```

1

表現ちょっと修正。

2020/11/03 06:18

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  > 4-10桁目... ([^/]+)⇒どういう意味?また行頭を評価しようとしている??
2
2
 
3
- 「[^(文字リスト)]」という正規表現での「^」は、行頭という意味ではなく「文字リストに含まれないもの」です。つまり「/」でい文字の1回以上の繰り返しという意味です。
3
+ 「[^(文字リスト)]」という正規表現での「^」は、行頭という意味ではなく「(文字リスト)に含まれないもの」です。つまり「/」でい文字の1回以上の繰り返しという意味です。
4
+ その他の部分の解釈は合っていると思います。
4
5
 
5
-
6
6
  ```
7
7
  $ echo '/~username' | perl -ne 'if ( $_ =~ m#^/~([^/]+)/?(.*)# ) { print "($1),($2)\n" }'
8
8
  (username