regex 匹配以逗号作为分隔符的十进制数字的正则表达式

vfhzx4xs  于 2022-11-26  发布在  其他
关注(0)|答案(4)|浏览(104)

正如在title中一样,我需要一个R中的正则表达式,它将匹配以逗号作为分隔符的十进制数字,以便从字符串stringr::str_extract中提取它们。正则表达式应捕获以下情况:

0,1
10
1000,29
3,23313

我试过类似[0-9]+,[0-9]+的东西,但它没有工作

jpfvwuh4

jpfvwuh41#

您可以使用

regmatches(x, gregexpr("\\d+(?:,\\d+)?", x))

见此R demo
要对stringr执行相同的操作,请使用stringr::str_extract_all“提取字符串中与模式匹配的所有片段”

library(stringr)
str_extract_all(x, "\\d+(?:,\\d+)?")

请注意,stringr函数中的\d可能匹配所有Unicode数字,如
0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙0123456789
因此,使用

str_extract_all(x, "[0-9]+(?:,[0-9]+)?")
k2fxgqgv

k2fxgqgv2#

您可以使用以下正则表达式来匹配一个或多个以逗号分隔的十进制数字:

\d+(?:,\d+)*
goqiplq2

goqiplq23#

试试这个,它匹配数字,后面可以跟一个逗号和一个或多个数字:

\b\d+(,d+)?\b
vyswwuz2

vyswwuz24#

如果您只关心提取整数(不包括分数),而不关心分隔符是逗号还是其他字符,则可以用途:

(\d+)

相关问题