我正在尝试从文件中提取一些DNA信息。
在由碱基GCAT组成的DNA数据之前,有一个词ORIGIN
,在其后有一个//
。如何编写正则表达式以在这些标记之间获得这些碱基?
我尝试了以下方法,但不起作用。
[ORIGIN(GCATgcat)////]
样本数据:
ORIGIN
1 acagatgaag acagatgaag acagatgaag acagatgaag
2 acagatgaag acagatgaag acagatgaag acagatgaag
//
最佳答案
尝试使用此模式“ \\b([GCATgcat]+)\\b
”,该模式与单词边界包围的任何GCAT字符序列(大写或小写)匹配(这样它就不会与嵌入在其他字符串中的那些字符匹配,例如单词“ catalog”)。如果您在示例文件中反复扫描此正则表达式,则将提取每个序列。
这是示例文件的工作示例:
// Locate the substring between "ORIGIN" and "//" in the file.
String fileContents = getSampleFileContents();
int indexOfOrigin = fileContents.indexOf("ORIGIN");
String pertinentSection = fileContents.substring(
indexOfOrigin, fileContents.indexOf("//", indexOfOrigin));
// Search for sequences within the pertinent substring.
Pattern p = Pattern.compile("\\b([GCATgcat]+)\\b");
Matcher m = p.matcher(pertinentSection);
List<String> sequences = new ArrayList<String>();
while (m.find()) {
sequences.add(m.group(1));
}
sequences.toString(); // => ["acagatgaag", "acagatgaag", ..., "acagatgaag"]