如标题所示,我需要 R 中的正则表达式,它将十进制数字与逗号作为分隔符进行匹配,以便从带有stringr::str_extract
的字符串中提取它们。正则表达式应捕获以下情况:
0,1
10
1000,29
3,23313
我[0-9]+,[0-9]+
尝试过这样的事情,但没有用
您可以使用
regmatches(x, gregexpr("\d+(?:,\d+)?", x))
请参阅此 R 演示。
要对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]+)?")
您可以使用以下正则表达式来匹配一个或多个以逗号分隔的十进制数字:
d+(?:,d+)*
试试这个,它匹配数字,可以选择后跟逗号和一个或多个数字:
bd+(,d+)?b
如果您只关心提取整数(没有分数(,并且不在乎分隔符是逗号还是其他任何东西,您可以使用:
(d+)