2016-07-29 4 views
8

मेरे परीक्षण मामले में से एक में मैं एक घटक के विशेष जार को एक स्थान से दूसरे स्थान पर कॉपी करना चाहता हूं। जैसे जब लक्ष्य निर्देशिका है केवल निम्नलिखित जारजावा रेगेक्स विशेष फ़ाइल को खोजने के लिए

org.test.custom.search-4.2.2-SNAPSHOT-.jar
org.test.custom.search-4.2.2- परीक्षण -SNAPSHOT.jar

मैं org.test.custom.search-4.2.2-SNAPSHOT-.jar की प्रतिलिपि बनाना चाहता हूं। जहां इस जार का संस्करण किसी भी समय बदला जा सकता है। इसलिए मैं उस उद्देश्य के लिए रेगेक्स का उपयोग यहां बता सकता हूं [1]। लेकिन मैं जानना चाहता हूं कि रेगिक्स में अन्य जार को कैसे छोड़ना है। मैं जार को छोड़ना चाहता हूं जिसमें स्ट्रिंग है "परीक्षण" इसके नाम पर।

1. Regex for files in a directory

+0

आप एक धारा के साथ फ़ाइलों को फिल्टर करने के लिए कुछ इस्तेमाल कर सकते हैं? – ifly6

उत्तर

1

आप फ़ाइल नाम इस तरह शब्द "परीक्षण" युक्त अगर indexOfregex के बजाय का उपयोग जांच करने के लिए कर सकते हैं:

if(fileName.indexOf("tests") >= 0) { 
    // do what you want 
} 

अद्यतन:indexOf() से बहुत जल्दी हो जाएगा एक regex, और शायद समझना भी आसान है।

+0

यह इस समय दोनों फाइलों को फ़िल्टर करेगा। "-टेस्ट्स-" में संशोधन करने से समस्या – izi

+0

सर को हल करेगी सर यदि आप देखते हैं कि यह 'परीक्षण' नहीं है 'परीक्षण'। वैसे भी जिस तरह से मैं दिखाता हूं वह ठीक है। –

+0

आपके उत्तर में 'regex' कहां है जिसके बारे में सवाल है? – xenteros

1

regex आधारित समाधान होगा:

if (fileName.matches(".*tests.*")) { 
    //do something 
} else { 
    //do something else 
} 
-1

एक regex मुख्य जार मिलान करने के लिए नहीं बल्कि परीक्षण जार हो सकता है:

\w+-[\d.]+-(?!tests-).*\.jar 

यह स्ट्रिंग "परीक्षण के लिए एक नकारात्मक मिलान है - "। ध्यान दें कि जब आप इस रेगेक्स को स्ट्रिंग में डालते हैं तो आपको बैकस्लाश से बचना होगा।

0

किसी भी संस्करण संख्या के साथ वास्तव में स्नैपशॉट मेल, सभी दूसरों (परीक्षण-SNAPSHOT सहित) अनदेखी:

org\.test\.custom\.search-\d+\.\d+\.\d+-SNAPSHOT-\.jar 
संबंधित मुद्दे