2012-03-08 3 views
0

에서 메뉴 항목을 제거하는 정규식 :나는 다음과 같은 코드 블록 함께 일하고 문자열

<UL id="nav-main-links"> <li class="standby" id="id61"> <a href="/?event=User.Home.dspHome" target="_self" title="Admin Tools"> Admin Tools<font class="menuItemType">(CB)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id62"> <a href="/unsecured/sitesurvey.cfm" target="_blank" title="Site Survey"> Site Survey<font class="menuItemType">(X)</font> </a> </LI></UL></LI> <li class="standby" id="id57"> <a href="/?event=Mall.Information.dspInformation" target="_self" title="Mall Info"> Mall Info<font class="menuItemType">(CB)</font> </a> </LI> <li class="standby" id="id19"> <a href="/?event=SMS.SMSbroadcast.browseSMSbroadcasts" target="_self" title="Send sms text messages to your groups"> SMS<font class="menuItemType">(CB)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id58"> <a href="/?event=SMS.SMSgroup.browseSMSgroups" target="_self" title="SMS Groups"> Groups<font class="menuItemType">(CB)</font> </a> </LI> <li class="standby" id="id59"> <a href="/?event=SMS.SMSkeyword.browseSMSkeywords" target="_self" title="SMS Keywords"> Keywords<font class="menuItemType">(CB)</font> </a> </LI></UL></LI> <li class="standby" id="id56"> <a href="/?event=Mall.Directory.dspList" target="_self" title="Directory"> Directory<font class="menuItemType">(CB)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id35"> <a href="/?event=Mall.Directory.dspAdd" target="_self" title="Add New"> Add New<font class="menuItemType">(CB)</font> </a> </LI></UL></LI> <li class="standby" id="id2"> <a href="/admin2/mall/mallinfo.cfm" target="_self" title="Mall Info"> Mall Info<font class="menuItemType">(L)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id17"> <a href="/sidefeature" target="_self" title="Side Features"> Side Features<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id18"> <a href="/admin2/misc/lakeElsinore/homepage.cfm" target="_self" title="Edit Homepage"> Edit Homepage<font class="menuItemType">(L)</font> </a> </LI></UL></LI> <li class="standby" id="id22"> <a href="/events/index.cfm" target="_self" title="Events"> Events<font class="menuItemType">(L)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id23"> <a href="/admin2/bDayClub/index.cfm" target="_self" title="Birthday Club"> Birthday Club<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id24"> <a href="/admin2/misc/12days.cfm" target="_self" title="12 Days Points"> 12 Days Points<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id25"> <a href="/admin2/darkSite/dsForm.cfm" target="_self" title="Emergency Info"> Emergency Info<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id26"> <a href="/admin2/mnog/mnog.cfm" target="_self" title="MNOG"> MNOG<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id27"> <a href="/admin2/mnog/eforl.cfm" target="_self" title="Earning for Learning"> Earning for Learning<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id28"> <a href="/admin2/partners/partners.cfm" target="_self" title="Partners"> Partners<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id29"> <a href="/admin2/events/raceForReceipts.cfm" target="_self" title="Race for Receipts"> Race for Receipts<font class="menuItemType">(L)</font> </a> </LI></UL></LI> <li class="standby" id="id30"> <a href="/admin2/mall/MallHours.cfm" target="_self" title="Hours"> Hours<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id31"> <a href="/admin2/mall/dir/" target="_self" title="Directory"> Directory<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id32"> <a href="https://www.google.com/accounts/login" target="_self" title="Google Analytics"> Google Analytics<font class="menuItemType">(X)</font> </a> </LI> <li class="standby" id="id33"> <a href="/admin2/mall/fpurl/poolb.cfm" target="_self" title="I-Features"> I-Features<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id34"> <a href="/admin2/Mall/FPURL/PressReleaseUrban.cfm" target="_self" title="Press Releases"> Press Releases<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id36"> <a href="/admin2/store/retailerNav.cfm" target="_self" title="Retail"> Retail<font class="menuItemType">(L)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id37"> <a href="/admin2/coupons/coupondirect.cfm" target="_self" title="Coupons"> Coupons<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id38"> <a href="/storeOffers/" target="_self" title="License To Shop"> License To Shop<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id39"> <a href="/admin2/Jobs-old/old/jobAdmin.cfm" target="_self" title="Jobs"> Jobs<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id40"> <a href="/admin2/store/modStore.cfm?mode=sales" target="_self" title="Sales and Events"> Sales and Events<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id41"> <a href="/admin2/MDB/" target="_self" title="MDB Data"> MDB Data<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id42"> <a href="http://mdb2.mallfinder.com/retail%20hub/" target="_self" title="MDB Application"> MDB Application<font class="menuItemType">(X)</font> </a> </LI> <li class="standby" id="id43"> <a href="/admin2/MDB/Reports/index.cfm" target="_self" title="Swipe Reports"> Swipe Reports<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id44"> <a href="/admin2/mallSlideShows.cfm" target="_self" title="Slide Shows"> Slide Shows<font class="menuItemType">(L)</font> </a> </LI></UL></LI> <li class="standby" id="id45"> <a href="/email/epostCard.cfm" target="_self" title="Email"> Email<font class="menuItemType">(L)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id46"> <a href="/email/admEmail.cfm" target="_self" title="AdmEmail"> AdmEmail<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id47"> <a href="/email/ddrEPostCard.cfm" target="_self" title="DDR Email"> DDR Email<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id48"> <a href="/email/epnew.cfm" target="_self" title="New Email"> New Email<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id50"> <a href="/email/emailReport.cfm" target="_self" title="Email Report"> Email Report<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id51"> <a href="/directMail/index.cfm" target="_self" title="Direct Mail"> Direct Mail<font class="menuItemType">(L)</font> </a> </LI> <li class="standby" id="id52"> <a href="/workflow/workflow_Entryform.cfm" target="_self" title="Change Orders"> Change Orders<font class="menuItemType">(L)</font> </a> </LI></UL></LI> <li class="standby" id="id53"> <a href="/contactus.cfm" target="_self" title="Contacts"> Contacts<font class="menuItemType">(L)</font> </a> <UL class="sub-nav-main-links nestingLevel1"> <li class="standby" id="id54"> <a href="http://vendor1.retailhub.com/index.cfm" target="_self" title="Ven"> Ven<font class="menuItemType">(X)</font> </a> </LI> <li class="standby" id="id55"> <a href="/SponsorShip/spEvents.cfm" target="_self" title="SponsorShip"> SponsorShip<font class="menuItemType">(L)</font> </a> </LI></UL></LI></UL> 

및 CFML에서 다음 의사 블록 : 난 그렇게 정규식 패턴을 재 작업하는 것을 시도하고있다

<cfscript> 
    myDisplay=structnew(); 
    myDisplay.pseudo=pseudo; 
    myDisplay.IdsToRemove="60|61"; 
    myDisplay.RegExTestPattern='<li[^>]*?!id="id(' & myDisplay.IdsToRemove & ')".*?li>'; 
    myDisplay.Menu=reReplaceNoCase(myDisplay.pseudo,myDisplay.RegExTestPattern,"","All"); 
</cfscript> 

을 id = = 1에서 x 값, 즉 60 | 61까지의 모든 LI를 제거합니다. 아이디어?

답변

1

저는이 부분의 coldfusion 부분을별로 도움이되지 않지만 정규 표현식은 그리 어렵지 않습니다. 그것들은 항상 직업에 적합한 도구는 아닙니다.

먼저 정규식은 숫자 평가를 수행하지 않습니다. 따라서 56 ~ 61 사이의 숫자를 일치 시키려면 /(5[6-9]|6[01])/ 또는 /(56|57|58|59|60|61)/을 사용해야합니다. 따라서 숫자 범위를 패턴으로 구성해야합니다.

그래서 ... 일치하는 RE는 특정 목록 항목 수 있습니다 :이 .*? 일치하는 데 필요한 최소 수의 문자로 확장은 "게으른 스타"를 사용

/ <li class="standby" id="id${RE}"> .*? <\/LI>/ 

... IE의 다음 발생 </LI>. 이것을 복잡하게 만드는 것은 <UL>을 중첩시킨 것입니다. 따라서 게으른 별이 항상 올바른 장소로 이동하지는 않습니다.

은 멋진 Perl 스타일의 RE로이를 구현할 수 있지만 확장 RE에서는 달성 할 수 없다고 생각합니다. Coldfusion이 Perl RE를 이해하는지 여부는 알 수 없습니다.

큰 불규칙한 정규 표현식을 작성하는 대신 XPath과 같은 것을 사용하여 HTML을 탐색 할 수 있습니다.

+0

나는 이것을 재 작업하려고 노력하고있다. 나는 그것을 뒤집을 수 있는지 알아보고, 모든 값을 다른 방식으로 제거하고 곧 게시 할 것이다. –

관련 문제