İfade tekrarlanan değişkenle bul ve değiştir?


-1

Bunun gibi görünen bir metin dosyasındaki öğelerin bir listesi var:

Masterfile="DM.xml" Doc-Name="PCP0001 Protocol" group="FP Team"
Masterfile="DM.xml" Doc-Name="PCR0001 Report" group="FP Team"
Masterfile="DM.xml" Doc-Name="DCR0002 Review" group="FP Team"

Bu şekilde görünmesi için orta kısmı genişletmek istiyorum:

Masterfile="DM.xml" Doc="http://1.1.1.1/PCP0001.Protocol.doc" Doc-Name="PCP0001 Protocol" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/PCR0001.Report.doc" Doc-Name="PCR0001 Report" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/DCR0002.Review.doc" Doc-Name="DCR0002 Review" group="FP Team"

Başka bir deyişle, Doküman Adı'nı kullanmak ve önüne bir URL eklemek ve boşlukları "." İle değiştirmek istiyorum.

Birisi bana bu konuda yardımcı olabilir? Kelimenin tam anlamıyla 900 tane bu tür sıralama var.

NotePad ++ 'da denedim:

Bu Bul ifadesini kullandım:

Doc-Name=[^"]*"([^"]+)"[^"]

Ve bu Replace ifadesini kullandı:

Doc="http://1.1.1.1/$1.doc" Doc-Name="$1" 

Bu bana% 90 var ama tam değil. 1 $ içindeki boşlukları dönemlerle nasıl değiştireceğimi bilmiyorum. Bu işi bitirecek ve burada biraz yardıma ihtiyacım var.


Süper Kullanıcıya Hoşgeldiniz! Şimdiye kadar ne denedin? Özel olarak hangi problemlerle karşılaştınız? Lütfen , kişilerin size cevap vermesine yardımcı olmak için bu bilgileri eklemek üzere sorunuzu düzenleyin . Teşekkürler! :)
bertieb

Evet, makul, işte ben denedim. NotePad ++ uygulamasında, bu ifadeyi bulmak için kullandım: Doc-Name = [^ "] *" ([^ "] +)" [^ "] ve sonra bu ifadeyi değiştirmek için: Doc =" 1.1.1.1/$1.doc " Doc-Name = "$ 1" Bu bana% 90 kazandı ... ama $ 1'deki boşlukları periyotlarla nasıl değiştireceğimi bilmiyorum ... Burada yardıma ihtiyacım var.
chilman408

her şeyi okumamıştım ama eğer bir şeyi yakalarsanız ve bir yakalamanın içindeki bir şeyi değiştirmek istiyorsanız, ikinci bir regex yaparsınız. Ayrıca, bir nokta ile değiştirilen bir boşluğu [ ]değiştirmek için de .(nokta yerine
koyma

Doc-Name="([^"]*)"Doc=......... Doc-name=......
Bulma kısmınız

i.imgur.com/VGRDo2v.png Bul- Doc-Name="([^"]*)" Kurun- replace Doc="http://1.1.1.1/$1" Doc-Name="$1" not defterinde yapılan ++ Ah ben şimdi gitmek zorunda .. Değiştirmek diğer bazı yapmak istiyorum bakınız tamam onunla / Yardım başka sonradan umarım birileri çözecektir tekrar bakacağız daha erken
barlop

Yanıtlar:


1

Birden fazla alan varsa işe yarayan bir yol:

  • Ctrl+H
  • Ne buldun: Doc-Name="([^"\h]+)\h+([^"\h]+)(?:\h+([^"\h]+))?(?:\h+([^"\h]+))?(?:\h+([^"\h]+))?(?:\h+([^"\h]+))?"
  • İle değiştirin: Doc="http://1.1.1.1/$1.$2(?3.$3:)(?4.$4:)(?5.$5:)(?6.$6:).doc" $0
  • Etrafına sar
  • Düzenli ifadeyi kontrol et
  • Replace all

Açıklama:

Doc-Name="          : literally
([^"\h]+)           : group 1, 1 or more any character that is not a double quote or horizontal space
\h+                 : 1 or more horizontal space
([^"\h]+)           : group 2, 1 or more any character that is not a double quote or horizontal space
(?:                 : non capture group
  \h+               : 1 or more horizontal space
  ([^"\h]+)         : group 2, 1 or more any character that is not a double quote or horizontal space
)?                  : end group, optional
(?:\h+([^"\h]+))?   : same as above
(?:\h+([^"\h]+))?   : same as above
(?:\h+([^"\h]+))?   : same as above
....... as many as you need
"                   : double quote

Değiştirme:

Doc="http://1.1.1.1/    : literally
$1                      : content of group 1
.                       : a dot
$2                      : content of group 2
(?3.$3:)                : conditional replacement, if group 3 exists replace by itself preceded with a dot
(?4.$4:)                : same as above for group 4
(?5.$5:)                : same as above for group 5
(?6.$6:)                : same as above for group 6
....... as many as you need
.doc"                   : literally
$0                     : a space then content of group 0 (ie. the whole match)

Gibi bir giriş verilen:

Masterfile="DM.xml" Doc-Name="PCP0001 Protocol abc def ghi jkl" group="FP Team"
Masterfile="DM.xml" Doc-Name="PCR0001 Report xyz" group="FP Team"
Masterfile="DM.xml" Doc-Name="DCR0002 Review" group="FP Team"

Sonuç:

Masterfile="DM.xml" Doc="http://1.1.1.1/PCP0001.Protocol.abc.def.ghi.jkl.doc" Doc-Name="PCP0001 Protocol abc def ghi jkl" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/PCR0001.Report.xyz.doc" Doc-Name="PCR0001 Report xyz" group="FP Team"
Masterfile="DM.xml" Doc="http://1.1.1.1/DCR0002.Review.doc" Doc-Name="DCR0002 Review" group="FP Team"

-1

Anladım .... lol

Barlop'un işaret ettiği gibi (teşekkürler), bu sorun birkaç adımda parçalandıktan sonra daha kolaydır.

Adım 1. OP'de açıklandığı gibi Doc = "URL" bileşenini ekleyin

Adım 2. Bu çok adımlı

Bul: Doc = (\ ". ) \ S (. .Doc")

Değiştir: Doc = \ 1. \ 2

NotePad ++ altındaki tüm değiştirme kullanın, ancak tüm boşlukları değiştirmek için gerektiği kadar kullanın.

YAPILAN!


TEKRAR BİR PATTERN I ile başa çıkma hakkında sormuştunuz. Yani ne istediğini sormadın. Tekrar eden bir model tekrarlanan boşluk olmayan bir model gibi doc = "abc def ghi" olur ve siz sadece boşlukları silmek istersiniz. İstediğin, istediğinden daha teknikti. Ve ne sormak istedim site için böylece hiçbir faydası, özel durum için sadece gerçekten olduğunu insanlara gerçekten yararlı ve böylece belirli olacak şekilde açıktır
barlop
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.