差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
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~~ |