Excel 파일을 CSV로 내보냈는데 그 안에 여러 줄이 많이 있습니다. 각 줄의 시작 부분을 ***로 표시하고 끝 부분을 ###로 표시했습니다.
*** some
text within
my cell to
export ###
누군가가 이 텍스트 파일에서 CRLF를 제거하여 다음과 같이 되도록 RexEx 표현식을 도와줄 수 있습니까?
*** some text within my cell to export ###
답변1
매크로를 사용하여 수행했습니다.
Dim pobjCell As Range
Dim plCharCounter As Long
Dim psCellText As String
For Each pobjCell In Selection
psCellText = pobjCell.Text
Do While InStr(psCellText, vbLf) > 0
psCellText = Replace$(psCellText, vbLf, " ")
Loop
pobjCell.Value = psCellText
Next
답변2
s/[\n\r ]+/ /g
[\n\r ]+
이는 모든 공백, 캐리지 리턴 및 개행 문자를 전체적으로 공백( )으로 대체합니다 .
s/\*\*\(*.*)[\n\r ]+(.*)###/$1 $2/g
***
이것은 문장이 로 시작 하고 끝나는 것으로 의심하는 이전 버전의 버전입니다 ###
.
s/^\*\*\*(.*)[\n\r ]+(.*)###$/$1 $2/g
***
이는 줄의 시작 부분에서 시작하고 ###
줄의 끝에서 끝나는 것을 확인하는 이전 버전입니다 . 이 중 하나가 원하는 것과 일치해야 합니다.
s/MATCH/REPLACE/OPTIONS
~이다sed/MATCH/OPTIONS
구문을 사용하지 않고 그냥 or MATCH
로 바꾸고 싶을 수도 있습니다 REPLACE
. 정규식을 어떻게 사용할 계획인지에 따라 다릅니다. 나는 당신의 설명을 고려할 때 중간이 가장 잘 작동할 것이라고 믿습니다.
답변3
정규식의 실제 구현이 가변 길이 뒤돌아보기를 지원하는지 여부는 모르겠지만 이론적으로 정규식은 다음과 같습니다(대체 함수의 두 번째 인수는 공백입니다).
(?<=\*\*\*[^#]*)\n(?=[^#]*###)
실제로 csv 파서는 문자열 내부의 새 줄(큰따옴표 사이)과 행 사이의 새 줄을 구별하므로 이는 문제가 되지 않습니다.
\n
그러나 행 끝을 특수 문자 시퀀스(예: "@@@")로 표시한 다음 모든 새 줄을 공백으로 바꾼 다음
@@@
새 줄로 바꿀 수 있습니다 \n
.
답변4
CSV 파일의 입력을 받아 파일을 출력하지만 ***로 시작하고 ###로 끝나는 줄이 함께 결합된 일부 VBS는 어떻습니까?
Option Explicit
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim bStripNewline, sOutput, sLine : bStripNewline = False
If WScript.Arguments.Count = 0 Then
WScript.Echo "Usage: " & WScript.ScriptName & " <file>"
WScript.Quit
End If
Dim oFile : Set oFile = fso.OpenTextFile(Wscript.Arguments(0), 1)
Do Until oFile.AtEndOfStream
sLine = oFile.ReadLine
If Left(sLine, 3) = "***" Then
bStripNewLine = True
sLine = Mid(sLine, 4, Len(sLine))
ElseIf Right(sLine, 3) = "###" and bStripNewLine = True Then
bStripNewline = False
sLine = Left(sLine, Len(sLine)-3)
End If
sOutput = sOutput & sLine
If bStripNewline = False Then sOutput = sOutput & VbCrLf
Loop
oFile.Close
Set fso = Nothing
WScript.Echo sOutput
파일에 저장하고 다음과 같은 방법으로 명령줄에서 실행합니다.
cscript //NOLOGO nameofscript.vbs <name of csv file> > <new file>
샘플 입력 파일:
the quick brown
*** some
text within
my cell to
export ###
fox jumps
***over
the
lazy###
dog
one two three
다음 출력을 생성합니다.
the quick brown
sometext withinmy cell toexport
fox jumps
overthe lazy
dog
one two three