2009-11-16 28 views
5

मैंने एक सी प्रोग्राम लिखा है जो विंडोज के तहत कमांड लाइन से तर्क प्राप्त करता है। तर्कों में से एक नियमित अभिव्यक्ति है। इसलिए मैं विशेष वर्ण जैसे पुनः प्राप्त करने के "(,।" Cmd.exe व्यवहार करता है "(" के रूप में विशेष वर्ण की जरूरत है, आदि, लेकिन।cmd में विशेष वर्ण कैसे इनपुट करें?

कैसे कर सकता था मैं इनपुट इन विशेष वर्ण?

धन्यवाद।

उत्तर

8

आप उद्धरण में तर्क रख सकते हैं:

myprogram.exe "(this is some text, with special characters.)" 

हालांकि मुझे लगता है नहीं होगा कि कोष्ठकों समस्याएं पैदा जब तक आप सशर्त बयान या एक बैच फ़ाइल में छोरों के लिए ब्लॉकों का उपयोग कर रहे हैं वर्ण के सामान्य सरणी।कि विशेष रूप से खोल द्वारा इलाज कर रहे हैं और के हवाले से या भागने की जरूरत है:

& | > <^

आप अपने नियमित अभिव्यक्ति में उन का उपयोग करते हैं, तो आप उद्धरण की जरूरत है, या बचने के उन अक्षरों:

myprogram "(.*)|[a-f]+" 
myprogram (.*)^|[a-f]+ 

(^ है एस्केप वर्ण जो निम्न वर्ण का कारण बनता है खोल से व्याख्या करने के लिए नहीं किया, लेकिन इसके बजाय सचमुच प्रयुक्त)

+1

मुझे लगता है कि '^ 'को भी भागने की आवश्यकता है। आपको इसे अपनी सूची में जोड़ना चाहिए। – quamrana

+0

हां, क्षमा करें। भूल गए :-) – Joey

9

आप आम तौर परके साथ किसी भी चरित्र उपसर्ग कर सकते हैंअपनी विशेष प्रकृति को बंद करने के लिए। उदाहरण के लिए:

Microsoft Windows XP [Version 5.1.2600] 
(C) Copyright 1985-2001 Microsoft Corp. 

C:\Documents and Settings\Pax>echo No ^<redirection^> here and can also do^
More? multi-line, ^(parentheses^) and ^^ itself 
No <redirection> here and can also do multi-line, (parentheses) and^itself 

C:\Documents and Settings\Pax> 

एक कैरट शब्द do के बाद एक के बाद ENTER है यही कारण है कि।

+0

ध्यान दें कि जब तक आप इसे सशर्त या लूप ब्लॉक में उपयोग नहीं कर रहे हैं, तो आपको ब्रांड्स से बचने की आवश्यकता नहीं है जैसे 'if foo == bar (echo^(foo ^))' – Joey

संबंधित मुद्दे