AMcoder - javascript, python, java, html, php, sql

r regex - փոխարինել որոշված ​​նիշի և բառի սահմանի միջև

Ես փորձում եմ ստանալ վեկտորի մեջ տողի երևույթները: Այս տողը կարող է հանդես գալ որպես «string» կամ «‹string>», սակայն վեկտորում կա միայն «string»: Այսպիսով.

> num <- c("one", "two")

> grepl("\\bone\\b", num)
[1]  TRUE FALSE

> grepl("<one>", num)
[1] FALSE FALSE

լավ, մինչ այժմ ես ստանում եմ այն, բայց երբ ես ստանում եմ

> grepl("[\\b<]one[\\b>]", num)

այն վերադառնում է

[1] FALSE FALSE

և ես դրա կարիքն ունեմ վերադառնալու համար

[1] TRUE FALSE

Ես հասա ցանկալի արդյունքի՝ օգտագործելով gsub՝ նախքան grepl-ն օգտագործելը տողի անկյունային փակագծերը հանելու համար, բայց դեռ չգիտեմ, թե ինչու վերը նշված կոդը չի աշխատում։

03.04.2018

Պատասխանները:


1

[\\b<] օրինաչափությունը չի համընկնում բառի սահմանի և <-ի հետ, քանի որ TRE ռեգեքսում փակագծային արտահայտության մեջ հետին կտրվածքը վերաբերվում է բառացիորեն որպես հետին կտրվածք (և համընկնում է հետին կտրվածքի հետ): [\\b<]-ը համընկնում է հետշեղի հետ՝ b կամ <:

Դուք ցանկանում եք այլընտրանքային խումբ, օրինակ.

grepl("(?:<|\\b)one(?:\\b|>)", num)

Այնուամենայնիվ, այն հավասար է grepl("\\bone\\b)", num)-ի, քանի որ կա բառի սահման <-ի և o-ի և e-ի և >-ի միջև:

Ավելի իմաստալից կլիներ, եթե նիշը լիներ բառ նիշ, օրինակ. ընդգծում.

grepl("(?:_|\\b)one(?:\\b|_)", num)

Այժմ այն ​​կգտնի համընկնում zero_one_two-ի ներսում (նախորդ \bone\b օրինաչափությունը չէր համընկնի այստեղ):

Նույնիսկ եթե դուք օգտագործում եք PCRE ռեգեքս, դուք չեք կարող օգտագործել \b-ը փակագծային արտահայտությունում՝ որպես բառի սահման, ձեզ դեռ պետք է փոխարինում: օր.

grepl("(?:_|\\b)one(?:\\b|_)", num, perl=TRUE)  # Non-capturing group version
grepl("(?<=_|\\b)one(?=\\b|_)", num, perl=TRUE) # Lookaround version

Այնուամենայնիվ, PCRE ռեգեքսում [\b<]-ը համապատասխանում է կամ backspace նիշին կամ <ին:

03.04.2018
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..