读取由引号和分号分隔的行的正则表达式
regular expression to read a line separated by quotation marks and semicolon
比如我有一行代码:
"12345";"ISBN345";"8"
我想写一个正则表达式来提取 12345,ISBN345,8。
这个正则表达式怎么写?
已更新:抱歉。
我没说清楚。这是我的真实数据:
"276729";"052165615X";"3"
(我的数据有很多行,这行只是一个例子)。我想提取 276729
(user id) 作为一个元素,052165615X
(book number) 作为一个元素,3
(book rating) 作为一个元素(这意味着我们需要与常规匹配每行三次表达式,所以我可以在每次读取一行时创建三个对象)但不能一次提取 276729 052165615X 3
选项1:将匹配并拆分为num, num, letters, num
"(\d+)";"(\d+)(.+)";"(\d+)"
选项 2:将匹配并拆分为 num、numletters、num
"(\d+)";"(\d+.+)";"(\d+)"
"([^"]+)"(;"([^"]+)")*
[^"]+
将匹配一个非空的非引号字符序列。如果字符串可以为空,您可以将 +
切换为 *
。
整个正则表达式将由一个单引号序列组成的非引号后跟零个或多个用分号分隔的引号序列。
我认为这应该适合你。
"(\d+)";"(.*?)";"(\d+)"
假设第一个和第三个值总是数字,而且只是数字。第二个值似乎可以是任何东西,所以 .*?
将允许所有内容存在,直到它遇到第一个双引号。
比如我有一行代码:
"12345";"ISBN345";"8"
我想写一个正则表达式来提取 12345,ISBN345,8。
这个正则表达式怎么写?
已更新:抱歉。
我没说清楚。这是我的真实数据:
"276729";"052165615X";"3"
(我的数据有很多行,这行只是一个例子)。我想提取 276729
(user id) 作为一个元素,052165615X
(book number) 作为一个元素,3
(book rating) 作为一个元素(这意味着我们需要与常规匹配每行三次表达式,所以我可以在每次读取一行时创建三个对象)但不能一次提取 276729 052165615X 3
选项1:将匹配并拆分为num, num, letters, num
"(\d+)";"(\d+)(.+)";"(\d+)"
选项 2:将匹配并拆分为 num、numletters、num
"(\d+)";"(\d+.+)";"(\d+)"
"([^"]+)"(;"([^"]+)")*
[^"]+
将匹配一个非空的非引号字符序列。如果字符串可以为空,您可以将 +
切换为 *
。
整个正则表达式将由一个单引号序列组成的非引号后跟零个或多个用分号分隔的引号序列。
我认为这应该适合你。
"(\d+)";"(.*?)";"(\d+)"
假设第一个和第三个值总是数字,而且只是数字。第二个值似乎可以是任何东西,所以 .*?
将允许所有内容存在,直到它遇到第一个双引号。