用于识别异常字符和亚洲表意文字的java正则表达式模式匹配器

时间:2015-02-12 05:28:17

标签: java regex pattern-matching

我想通过以下文本根据java正则表达式模式提取某些元素:

『卥』

对于此元素『卥』,我想我总能找到之间的项目并提取它,这应该是可行的,因为它们很漂亮不寻常的实体,因此它应该是识别和提取它们之间的任何内容的良好基础,即

有很多关于使用java正则表达式模式匹配器来匹配整个字符类的信息,但是我没有找到很多关于只匹配一个或两个特定的字符并从中删除之间的东西。我认为这当然是可能的,不是吗?怎么做?

理想情况类似

match(`『` and `』`)
{
     print(what comes between them)
}

试过这个,但没有工作:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class text_processing
{
    @SuppressWarnings("resource")
    public static void main(String[] args) throws IOException
    {
        String sCurrentLine; 
        BufferedReader br = new BufferedReader(new FileReader("/home/matthias/Workbench/SUTD/1_February/brute_force/items.csv"));


        Pattern p = Pattern.compile("/『(.*?)』/");


        while ((sCurrentLine = br.readLine()) != null) 
        {
            Matcher m = p.matcher(sCurrentLine);
            System.out.println(m);
        }
    }
}

感谢您的考虑

2 个答案:

答案 0 :(得分:2)

以下将是你的正则表达式

"『(.*?)』"

在此处查看工作示例:https://regex101.com/r/lO8xR1/1

答案 1 :(得分:1)

String text = ...; // your text
Pattern pat = Pattern.compile( "『([^』]*)』" );
Matcher mat = pat.matcher( text );
if( mat.find() ){
    System.out.println( mat.group(1) );
}

您可以反复使用它来查找所有次出现:

while( mat.find() ){
    System.out.println( mat.group(1) );
}