差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

下次修改
前次修改
java:java_regular_expression [2017/09/27 22:36]
tony 建立
java:java_regular_expression [2023/06/25 09:48] (目前版本)
行 6: 行 6:
 <code java> <code java>
 @Test @Test
-public void testPattern(){+public void testPatternWithoutDotAll(){
  Pattern p = Pattern.compile("​test.*"​);​  Pattern p = Pattern.compile("​test.*"​);​
  Matcher m = p.matcher("​test 123\n456"​);​  Matcher m = p.matcher("​test 123\n456"​);​
行 23: 行 23:
 } }
 </​code>​ </​code>​
 +==== 為何square只能用在第一行?​ ==== 
 +我想找開頭為test的那行,我使用以下的pattern:​ 
 +<code java> 
 +@Test 
 +public void testPatternWithSqure(){ 
 + Pattern p = Pattern.compile("​^test.*"​);​ 
 + Matcher m = p.matcher("​abc\ntest123\n567"​);​ 
 + assertTrue(m.find());​ 
 + assertEquals("​test123", ​ m.group());​  
 +
 +</​code>​ 
 +執行後會test failed,但test在第一行卻會很正常;最後[[https://​stackoverflow.com/​questions/​44922041/​why-is-the-beginning-of-a-line-not-recognized-by-a-regex|爬文]]得知,要搭配Pattern.MULTILINE一起使用:​ 
 +<code java> 
 +@Test 
 +public void testPatternWithSqure(){ 
 + Pattern p = Pattern.compile("​^test.*",​ Pattern.MULTILINE);​ 
 + // 略過 
 +
 +</​code>​
 ===== Resource ===== ===== Resource =====
   * [[https://​docs.oracle.com/​javase/​8/​docs/​api/​java/​util/​regex/​Pattern.html|Javadoc - Pattern]]   * [[https://​docs.oracle.com/​javase/​8/​docs/​api/​java/​util/​regex/​Pattern.html|Javadoc - Pattern]]
- +=====    ===== 
- +---- 
 +\\ 
 +~~DISQUS~~