我有使用 .NET 解析 .qif 文件的代码。我正在尝试将此代码移植到 Java,但在执行部分解析的正则表达式时遇到问题。这是文件开头的示例:
!Type:Tag
NAdam
DSon
^
NAllison
^
NAmber
DSabrina's Sister
^
NAnthony
^
在 .NET 中,我可以使用以下代码开始解析:
// Read the entire file
string input = reader.ReadToEnd();
// Split the file by header types
string[] transactionTypes = Regex.Split(input, @"^(!.*)$", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
当我调试 .NET 解析器时,我看到以下内容:
transactionTypes[0] = ""
transactionTypes[1] = "!Type:Tag\r"
transactionTypes[2] = "\nNAdam\r\nDSon\r\n^\r\nNAllison\r\n^NAmber\r\nDSabrina's Sister\r\nNAnthony\r\n^
在Java中,它似乎总是跳行!Type:Tag
,所以我不知道被解析的类型。我在 Java 中尝试了各种版本的正则表达式,包括以下内容:
String[] transactionTypes = dataToParse.split("!.*");
String[] transactionTypes = dataToParse.split("\\s*^(!.*)\\s*");
String[] transactionTypes = dataToParse.split("\\s*(?m)^(!.*)$\\s*");
当我说它跳过该!Type:Tag
行时,我在调试时看到以下内容:
transactionTypes[0] = ""
transactionTypes[1] = "\nNAdam\r\nDSon\r\n^\r\nNAllison\r\n^NAmber\r\nDSabrina's Sister\r\nNAnthony\r\n^
任何帮助表示赞赏!先感谢您!