gpt4 book ai didi

java - 在java中使用正则表达式提取值

转载 作者:行者123 更新时间:2023-12-01 12:08:25 24 4
gpt4 key购买 nike

在文本文件中,我有章节和诗句,我需要提取章节编号和诗节编号。章节的格式为 ["CHAPTER "] [编号]经文的格式为[数字][文本]我有一个正则表达式,一旦搜索了一个单词,它就会打印出文档中的章节编号,就好像该单词包含在该章节中一样,但是,对于诗句部分,它会打印出整个诗句,现在只打印出数字。我需要的是诗节编号而不是文本。

String patt = "((?<chapter>CHAPTER\\s\\d{1,3}) (?<verse>\\d{1,3})(?<verseText>.*))|(^(?<verse2>\\d{1,3})(?<verseText2>.*))";

我如何扩展它以使其搜索诗节编号而不是文本,诗节在文本文档中每行列出,并且诗节编号位于每行的开头。感谢您的帮助。

最佳答案

你可以这样做:

(?'Chapter'\w* ){1,3}(?'chapter_number'\d{1,3}) (?'Verse'\w*){1} (?'verse_number'\d){1,3}

您可能不需要担心对章节和诗句进行一般匹配,因为听起来您知道它们总是相同的单词,因此您可以将上面的内容简化为:

(?'chapter'CHAPTER \d{1,3}) (?'Verse'\d{1,3})

标签为您提供了一种在数字之间进行判断的方法,而范围则让您可以明确数字匹配的位数。

更新

如果您需要它来匹配第 1 章 1(某些文本)或 2(某些文本)场景,您也可以这样做:

((?'chapter'CHAPTER \d{1,3}) (?'verse'\d{1,3})(?'verse_text2'.*))|(^(?'verse2'\d{1,3})(?'verse_text'.*))

您可以尝试这些 here 。我发现该网站有时对于进行健全性检查很有帮助。

由于您正在使用 Java,this site可能对你更有帮助。

java 中的组命名存在一些语法差异。 This stack overflow answer非常适合指出其用途和一些限制。

最后一次编辑显示了一个更符合 Java 的示例。试试 RexexPlanet site .

((?<chapter>CHAPTER \d{1,3}) (?<verse>\d{1,3})(?<verseText>.*))|(^(?<verse2>\d{1,3})(?<verseText2>.*))

我使用以下内容进行测试输入。

The Book About Old Moldy Cheese    

CHAPTER 1 1 The chease is old and moldy.
2 No it isn't
3 Yes it is
4 No it isn't
5 I said, yes it is.
Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is. Yes it is.
6 Lame story

我希望这会有所帮助。

关于java - 在java中使用正则表达式提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27406173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com