行の末尾($)
来源:互联网 发布:2017昆广网络收费标准 编辑:程序博客网 时间:2024/05/16 06:14
行の先頭と同じく行の末尾という位置にマッチするパターンを記述するにはメタ文字の1つである"$"を使います。
書式は次の通りです。
"パターン$"
パターンには"$"を除いたパターンを記述します。
考え方としてはパターンが"abc"だった場合、ターゲット文字列の中に"abc"という文字列が存在するかどうかを調べますが、パターンが"abc$"だった場合にはターゲット文字列の中に"abc"+「行の末尾」が存在するかどうか調べます。結果的に行の最後に"abc"が存在する文字列にマッチすることになります。
具体的な例で考えてみます。"abc def"と"def abc"と言う2つの文字列に対してパターンを"abc"と指定した場合にはどちらの文字列にも"abc"は含まれているため、どちらもマッチします。
○ abc def○ def abc
これに対してパターンを"abc$"と記述した場合は、行の末尾に位置に"abc"がある場合だけマッチします。よって"abc def"にはマッチしませんが"def abc"にはマッチします。
× abc def○ def abc
具体的には次のように記述します。
String str = "abc def";String regex = "abc$";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(str);if (m.find()){ System.out.println("マッチしました");}else{ System.out.println("マッチしません");}
上記の場合はマッチしません。
マルチラインモード
"^"と同じく"$"もデフォルトでは行末記号の直前にはマッチせず文の最後にしかマッチしません。行末文字の直前にマッチさせたい場合にはMULTILINEモードを有効にして下さい。
具体的な例で考えてみます。"abc¥ndef"と言う文字列に対してパターンを"abc$"と指定した場合、デフォルトでは行末記号を無視するためマッチしません。MULTILINEモードを有効にした場合には行末記号が有効となり"abc"と"def"という2つの行に対して調べることになるためマッチします。
デフォルトの状態:× abc¥ndefマルチラインモード有効:○ abc¥ndef
具体的には次のように記述します。
String str = "abc¥ndef";String regex = "abc$";Pattern p = Pattern.compile(regex, Pattern.MULTILINE);Matcher m = p.matcher(str);if (m.find()){ System.out.println("マッチしました");}else{ System.out.println("マッチしません");}
なお行末記号については「行末記号」を参照して下さい。
サンプルプログラム
では実際に試してみます。
JSample2_1.java
import java.util.regex.Pattern;import java.util.regex.Matcher;class JSample2_1{ public static void main(String args[]){ String str1 = "abc def"; String str2 = "def abc"; String str3 = "abc¥ndef"; String regex1 = "abc$"; Pattern p1 = Pattern.compile(regex1); String regex2 = "abc$"; Pattern p2 = Pattern.compile(regex2, Pattern.MULTILINE); System.out.println("パターン : " + regex1); check(p1, str1); check(p1, str2); check(p1, str3); System.out.println("¥nマルチラインモードに変更¥n"); System.out.println("パターン : " + regex2); check(p2, str1); check(p2, str2); check(p2, str3); } private static void check(Pattern p, String target){ Matcher m = p.matcher(target); if (m.find()){ System.out.println("○ " + target); }else{ System.out.println("× " + target); } }}
ではコンパイルを行った上で実行してみます。
デフォルトのままですと文字列の末尾に"abc"がある場合にだけマッチしますが、マルチラインモードを有効にすると行の最後に"abc"がある場合にマッチします。
- 行の末尾($)
- python读取文件末尾N行
- notepad++ 行末尾添加指定字符
- 用scanf判断是不是行末尾
- 【python】在Excel末尾增加新行
- 文字列の末尾(¥Z, ¥z)
- datagridveiw添加行末尾出现两行的情况
- php读取文件末尾n行有效办法
- 把行末尾的换行符变成空格
- css设置文本超出两行 末尾用省略号表示
- python seek() 有条件的打印出末尾几行
- 多行文本最后行末尾省略号显示
- 平方末尾
- 平方末尾
- 删除每个输入行末尾的空格,制表符,并删除全空格行
- Linux下在文件内部指定行(首行、末尾行等)插入内容
- 在Linux下删除文件行末尾的^M符号方法
- 在Linux下删除文件行末尾的^M符号方法
- IOS 应用UIWindow分析
- HDU 3549 最大流 EK算法 邻接表实现
- 运算符重载
- IOS 应用UIView分析
- 行の先頭(^)
- 行の末尾($)
- hdu 3183 A Magic Lamp
- 杭电ACM 2021 发工资咯:)
- GF 3.1.1 WebSocket support - cannot enable WebSockets
- poj 1436 Horizontally Visible Segments #线段树#hash#暴力枚举
- 怎样看待这两个词语---天赋、踏实
- Linux设备驱动编程之阻塞与非阻塞
- 搜索引擎提交注意事项
- HTML自闭合标签(不全待完善)