2012-08-05 137 views
1

說我有它包含了如下文件:正則表達式 - 解析字符串

Hayden 
y 

假設我想操縱僅包含「Y」,而不是一個與海登行,我如何做到這一點?

所以我讀的文件中,並逐行解析它。我想說如果該行在「y」之前或之後包含字母,那麼它不是我要查找的行。

我想我可以做到以下幾點:

String value = "y"; 
if(strLine.matches("[a-zA-Z]" + value + "[a-zA-Z]")) 
{ 
     don't manipulate line here 
} 
else 
{ 
    manipulate string here 
} 

然而,這種被 「海登」 以及 「Y」

任何想法?

編輯

對不起,我本來應該更清晰,如果我要是前面有空格或符號不介意?還是落後?它特別是我需要留意的字母。舉例來說,我不能擁有YH,但我可以有Y = ...對不起再次

回答

1

也許這是你在找什麼

String[] lines={"Hayden","y"," y*","y=","y+"," +y..."}; 
for (String s:lines) 
    System.out.println(s+"->"+s.matches("\\W*y\\W*")); 

輸出:

Hayden->false 
y->true 
y*->true 
y=->true 
y+->true 
+y...->true 
+0

嗯,但有什麼像y =或y +或+ y ...我認爲這會失敗,但這些線對我來說是好的。這只是如果有一個字母直接在Y旁邊 - 在任何一方,我想避免.. – BigBug 2012-08-05 23:01:40

+0

@BlueMonster檢查我的編輯,看看是否可以 – Pshemo 2012-08-05 23:06:00

+0

謝謝:)這實際上工作。很酷的東西人。再次感謝 – BigBug 2012-08-05 23:13:48

4

您可以使用排除lookarounds

if (strLine.matches("^.*(?<![a-zA-Z])y(?![a-zA-Z]).*$")) { 
    // manipulate string here 
} 

錨是可選的,但包括反正清晰。

+0

這可能是e顯示asiest方式,如果行僅包含Y(你也可以使用「equalsIgnoreCase()」 – DMor 2012-08-05 22:46:06

+0

對不起,我本來應該更清晰,如果我要是有符號不介意嗎?或前面的空間? – BigBug 2012-08-05 22:47:53

+0

這幾乎可以工作...但由於某種原因,它不捕捉y = y + y ... hwo我會解決這個問題嗎?正如我所說,我不介意有符號或空格...只是旁邊不能有字母..感謝btw – BigBug 2012-08-05 22:56:06

3

您可以使用:

strLine.matches("^y$") 

要忽略的符號,即非字母數字字符,請使用:

strLine.matches("^\\W*y\\W*$") 
+0

對不起,我應該已經更清楚了,如果我不介意前面有空格或符號怎麼辦?還是落後?它特別是我需要留意的字母。例如,我不能有啊,但我可以有y = ...再次抱歉 – BigBug 2012-08-05 22:48:47

+0

好吧,已添加一個新的表達 – Reimeus 2012-08-05 22:52:23

+0

謝謝這幾乎是我一直在尋找+1 – BigBug 2012-08-05 23:18:20

0

如果你要使用正則表達式,你需要更具體一點:

  • y匹配y在該行的任何地方。
  • ^y$匹配的y這是正確的字符串(插入符號)開始後的字符串(美元符號)和右結束之前。這可以讓你匹配等於y的行。
0

擴展了equals方法:只需刪除所有你不介意的字符,然後檢查與"y"

if (strLine.replaceAll("[^a-zA-Z]", "").equals("y")) { 
    ... 
} 
+0

我不能刪除我不想要的信件......他們必須呆在那裏......我只需要解決他們......因爲我不想操縱那些行... – BigBug 2012-08-05 23:00:31

+0

replace()不處理任何東西,它返回一個新的字符串。條件是閱讀「如果我要拿出所有不是aZ的東西,其餘的只是一個」y「,那麼......」 – Bergi 2012-08-05 23:03:42

+0

但我不想對包含其他字母的行做任何事情....只有當這行包含我要查找的字母和符號或空格...在這種情況下,我想操縱字符串。但是,如果我刪除所有內容,然後檢查是否有「y」,我如何確定這是或不是隻包含我要查找的字母和符號(如果有的話)的行 - 雖然並不一定有成爲任何符號... – BigBug 2012-08-05 23:13:16