Java中空正規表示式 的匹配問題

2021-08-20 15:24:45 字數 1057 閱讀 9334

這幾天在做《軟體構造》這門課的實驗時,需要用到正規表示式。具體操作是從乙個檔案中逐行讀取資料,然後用正規表示式來匹配判斷並提取資料。由於檔案中存在空行,所以我就考慮到用空正規表示式""來匹配它,結果是可以匹配成功的,但是,當我用空正規表示式來匹配其它任何字串時,竟然發現都能成功,這就不能達到通過匹配來篩選資料的目的了,只能另闢蹊徑。

我們來寫一些簡單的測試**驗證一下。

首先我們用空正規表示式來匹配一下空行,看能不能成功,具體**如下:

public static void main(string args) throws ioexception
text.txt檔案內容為(注意第一行為空行):

**輸出的結果為true,符合預期。

但是,經過驗證,其它字串用空正規表示式匹配也能成功。

我們把上述**修改一下:

public static void main(string args) throws ioexception
這次我們把檔案中的第二行也讀進來,並用空正規表示式來匹配它。

我們會驚奇地發現兩個輸出都是true。

這就表明空正規表示式可以匹配其它的字串,導致其它任何非法字串也能匹配進來,所以我放棄了用空正規表示式來匹配空行。

於是,我就想用"\\s"來匹配空行,但是按行讀取檔案時,若讀取的是空行,則讀進來的字串就是"",是不包含任何空白字元(如換行符、回車符等)的字串,即使用"\\s"來匹配它也是false,我們看如下**:

public static void main(string args) throws ioexception
此時我們用"\\s"來匹配檔案中第一行的空行,執行如上**,輸出結果果然為false。

因此,我又想了另乙個辦法,既然用正則不行,我們就別用正則了。

當要判別讀進來的是空行時,我們可以直接用if語句來判斷,例如:if(line.equals(""))...。

java正規表示式匹配

package offer 字串匹配 匹配任意乙個字元 表示前面的字元出現任意次 public class match private static boolean match string str,int strindex,string pattern,int patternindex 出口2 模...

Java正規表示式匹配規則

正規表示式 英語 regular expression,在 中常簡寫為 regex 正規表示式 是乙個字串,使用單個 字串來描述 用來定義匹配規則,匹配一系列符合某個句法規則的字串。在 開發中,正規表示式通常被用來檢索 替換那些符合某個規則的文字。參照幫助文件,在pattern類中有正規表示式的的規...

java常用正規表示式匹配

package com.yt.eos.common.utils 正規表示式匹配 author tyg date 2018年9月21日下午4 32 27 public class patternutil 座機號碼匹配 public static final string mobile reg d d ...